C++ / Python 中 Matlab 的 num2hex 的等价实现
在C++或Python中有没有和MATLAB的 num2hex 函数相同的功能呢?
Python里的 float.hex
和 int.hex
函数的结果和MATLAB的 num2hex
函数不一样。
2 个回答
2
- 不幸的是,这对负数(32位浮点数,64位浮点数)不起作用,因为在解包操作后会包含负号。通过将'l'改为大写的'L',将'q'改为大写的'Q',就可以使用无符号表示。
此外,十六进制数字是以大端格式显示的。如果想要小端格式,可以用'<'代替'!'。
# 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有很多现成的库,可以帮助你快速完成任务。