C++ / Python 相当于 Matlab 的 num2hex

C++ / Python Equivalent of Matlab's num2hex

本文关键字:num2hex Matlab 相当于 Python C++      更新时间:2023-10-16

在c++或Python中是否有一个函数相当于MATLAB的num2hex函数?

Python的float.hexint.hex函数不给出与MATLAB的num2hex函数相同的结果。

MATLAB

% single
>> num2hex(single(1))
ans =
3f800000
% double
>> num2hex(1)
ans =
3ff0000000000000
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'
  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])