在Matlab中将十六进制数转换为十进制数

时间:2011-11-19 00:59:27

标签: matlab hex

我有以下内容:

92e1a330
3ff32343
4a443455
23d4df43
5323e345

我意识到Matlab无法使用textscan读取十六进制数字,因此我将整个文本文件作为字符串读取。问题是,当我尝试使用hex2dec()将字符串转换为十六进制时,我不能得到我想要的东西。例如,对于92e1a330十六进制,hex2dec返回2.4643e+009而不是2464260912。有可能以某种方式解决这个问题吗?谢谢!

3 个答案:

答案 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