Hex to Num / Hex Cell Array

9 次查看(过去 30 天)
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 个评论
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
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 个)

类别

Help CenterFile Exchange 中查找有关 Cell Arrays 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by