我有以下内容:
92e1a330
3ff32343
4a443455
23d4df43
5323e345
我意识到Matlab无法使用textscan读取十六进制数字,因此我将整个文本文件作为字符串读取。问题是,当我尝试使用hex2dec()将字符串转换为十六进制时,我不能得到我想要的东西。例如,对于92e1a330
十六进制,hex2dec
返回2.4643e+009
而不是2464260912
。有可能以某种方式解决这个问题吗?谢谢!
答案 0 :(得分:2)
完整的数字就在那里,只是隐藏在显示格式之后。例如:
num2str(hex2dec('92e1a330'))
ans =
2464260912
答案 1 :(得分:0)
您可以调整Matlab显示数字的方式,但实际值的存储精度通常比打印到屏幕上的精度更高。
要调整显示格式,请使用format
命令。例如:
>> format short g %This is the default
>> x = hex2dec('92e1a330')
x =
2.4643e+009
现在将格式设置为长格式
>> format long g
>> y = hex2dec('92e1a330')
y =
2464260912
无论如何,数字是相同的
>> x-y
ans =
0
有很多格式选项,包括显示为十六进制,并显示为工程(如科学,但指数始终是3的倍数)。 help format
了解更多信息。
答案 2 :(得分:0)
正如其他人已经回答的那样,数字就在那里,但由于格式设置,Matlab省略了一些数字。
一种简单的方法是强制hex2dec的结果为整数,然后显示所有数字。例如:
x = uint32(hex2dec('92e1a330'))
x =
2464260912