How to separate first 8 digits in binary format and convert them to the hex?

6 次查看(过去 30 天)
I need a code to ask me to enter a number in binary format, and then separate them byte by byte (each 8 digits) then displace low and high value bytes and convert them to the hex.
for example if the input is 1000000011000000 then the output would be c080

采纳的回答

dpb
dpb 2013-7-7
编辑:dpb 2013-7-7
Enter the value as a string and then convert. First below does the endian swap directly; if want to do this way write a little helper function that does it.
Alternatively, use the builtin swapbytes function on the internal representation.
MATL
>> b='1000000011000000'
b =
1000000011000000
>> dec2hex(bin2dec([b(9:16) b(1:8)]))
ans =
C080
>> dec2hex(swapbytes(uint16(bin2dec(b))))
ans =
C080
>>

更多回答(2 个)

Image Analyst
Image Analyst 2013-7-7
编辑:Image Analyst 2013-7-7
Try this:
binaryString = '1000000011000000'
decimalNumber = bin2dec(binaryString)
hexString = dec2hex(decimalNumber)
Adapt as necessary. To get substrings
ss = s(1:8) % Get first 8 digits.
To reverse digits:
sr = s(end: -1 : 1)

Jan
Jan 2013-7-7
编辑:Jan 2013-7-7
bin2dec and dec2hex have a certain overhead, which can be avoided:
str = '1000000011000000';
bin = reshape(str - '0', 8, [])';
d = bin * pow2(:-1:0)';
d = d([2,1]); % Swap bytes
h = sprintf('%x', d);

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by