C++ / Python 中 Matlab 的 num2hex 的等价实现

2 投票
2 回答
565 浏览
提问于 2025-04-18 13:36

在C++或Python中有没有和MATLAB的 num2hex 函数相同的功能呢?

Python里的 float.hexint.hex 函数的结果和MATLAB的 num2hex 函数不一样。

2 个回答

2
  1. 不幸的是,这对负数(32位浮点数,64位浮点数)不起作用,因为在解包操作后会包含负号。通过将'l'改为大写的'L',将'q'改为大写的'Q',就可以使用无符号表示。
  2. 此外,十六进制数字是以大端格式显示的。如果想要小端格式,可以用'<'代替'!'。

    # 32-bit float
    >>> hex(struct.unpack('<L', struct.pack('<f', x))[0])
    
    # 64-bit float
    >>> hex(struct.unpack('<Q', struct.pack('<d', x))[0])
    
3

MATLAB

% single
>> num2hex(single(1))
ans =
3f800000

% double
>> num2hex(1)
ans =
3ff0000000000000

MATLAB是一种用于数学计算和数据分析的编程语言。它特别适合处理矩阵和数组,常用于工程和科学领域。你可以用它来绘图、计算复杂的数学公式,或者进行数据处理。

Python

>>> x = 1.0

# 32-bit float
>>> hex(struct.unpack('!l', struct.pack('!f',x))[0])
'0x3f800000'

# 64-bit float
>>> hex(struct.unpack('!q', struct.pack('!d',x))[0])
'0x3ff0000000000000L'

Python是一种简单易学的编程语言,适合初学者。它的语法清晰,功能强大,可以用来做网站开发、数据分析、人工智能等各种应用。Python有很多现成的库,可以帮助你快速完成任务。

撰写回答