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

发布于 2024-12-16 21:44:20 字数 322 浏览 2 评论 0原文

我有类似以下内容:

92e1a330
3ff32343
4a443455
23d4df43
5323e345

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

I have something like the following:

92e1a330
3ff32343
4a443455
23d4df43
5323e345

I realised that Matlab is not able to read hex numbers using textscan so I read the whole text file as a string. The problem is that when I try to use hex2dec() to convert the string to hex, I don't quite get what I want. For instance, for 92e1a330 hex, hex2dec returns 2.4643e+009 instead of 2464260912. Is it possible to fix that somehow? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

等待圉鍢 2024-12-23 21:44:21

完整的数字就在那里,只是隐藏在显示格式后面。例如:

num2str(hex2dec('92e1a330'))

ans =

2464260912

The full number is there, just hidden behind the display formatting. For example:

num2str(hex2dec('92e1a330'))

ans =

2464260912
夜未央樱花落 2024-12-23 21:44:21

您可以调整 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 的倍数)。 帮助格式了解更多信息。

You can adjust the way Matlab displays numbers, but the actual values are generally stored with more precision than it prints to the screen.

To adjust the display format, use the format command. For example:

>> format short g  %This is the default
>> x = hex2dec('92e1a330')
x =
  2.4643e+009

Now set the format to a long format

>> format long g
>> y = hex2dec('92e1a330')
y =
            2464260912

Regardless, the numbers are the same

>> x-y
ans =
     0

There are a lot of format options, including display as hex, and display as engineering (like scientific, but the exponent is always a multiple of 3). help format for more.

半仙 2024-12-23 21:44:21

正如其他人回答的那样,数字就在那里,但Matlab由于格式设置而省略了一些数字。

一个简单的方法是强制 hex2dec 的结果为整数,然后所有数字都会显示出来。例如:

<块引用>

x = uint32(hex2dec('92e1a330'))

x =

2464260912

As others have answered, the number is there, but Matlab omits some digits due to the format setting.

A simple way is to force the result from hex2dec to be integer, and then all digits will show up. For example:

x = uint32(hex2dec('92e1a330'))

x =

2464260912

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文