Hello I have a hex cell array and I indexed them.
For example I have 'A7' and when I use hex2dec, it gives me nonsense result which is -7.7452e-121. how can I get exact result? I mean I want to see that hex A7 = decimal 167.
Thank you.

댓글 수: 6

Chunru
Chunru 2022년 6월 3일
Can you show your cell array?
Rik
Rik 2022년 6월 3일
Please post code that reproduces this issue. You can run code within the editor to make sure the effect matches what you see in your local copy.
tinkyminky93
tinkyminky93 2022년 6월 3일
My cell array is like
4x1 cell array
{'3A'} {'F1'} {'CF'} {'4C'}
tinkyminky93
tinkyminky93 2022년 6월 3일
I can not post it there because I am reading these values from data log.
Stephen23
Stephen23 2022년 6월 3일
편집: Stephen23 2022년 6월 3일
hex2dec('A7') % what you should have used
ans = 167
hex2num('A7') % what you actually used
ans = -7.7452e-121
The unfortunately named NUM2HEX and HEX2NUM convert to/from the IEEE 754 floating point hexadecimal representation, they are completely unsuitable for your task. Just for interest, the complete hexadecimal is:
num2hex(hex2num('A7'))
ans = 'a700000000000000'
Apparently someone thought that it would be a good idea to pad its input with trailing zeros. Ugh.
Chunru
Chunru 2022년 6월 3일
편집: Chunru 2022년 6월 3일
hex2num inteprete 'A7' as IEEE double number (64bit) with mantissa and exponents. So padding 0's before 'A7'. The string is in a different order (from last byte to first byte) so it looks like (actually not) padding 0's after 'A7'.

댓글을 달려면 로그인하십시오.

 채택된 답변

Chunru
Chunru 2022년 6월 3일

0 개 추천

x ={'3A', 'F1', 'CF', '4C'}
x = 1×4 cell array
{'3A'} {'F1'} {'CF'} {'4C'}
y = cellfun(@hex2dec, x)
y = 1×4
58 241 207 76

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Data Type Conversion에 대해 자세히 알아보기

제품

릴리스

R2021b

질문:

2022년 6월 3일

편집:

2022년 6월 3일

Community Treasure Hunt

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

Start Hunting!

Translated by