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