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

6 views (last 30 days)
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

Accepted Answer

dpb
dpb on 7 Jul 2013
Edited: dpb on 7 Jul 2013
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
>>

More Answers (2)

Image Analyst
Image Analyst on 7 Jul 2013
Edited: Image Analyst on 7 Jul 2013
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 on 7 Jul 2013
Edited: Jan on 7 Jul 2013
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);

Categories

Find more on Data Type Conversion in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!