gpt4 book ai didi

python - 将 float 重铸为 gdb 中的 ieee754 表示形式

转载 作者:太空宇宙 更新时间:2023-11-04 03:56:40 27 4
gpt4 key购买 nike

嗨,我正在玩以下内容,我想在 Linux shell 中在 IEEE754 表示形式和十进制 float 之间进行转换。我发现的唯一方法是:

gdb --batch -ex "print/x (float *) ( (float) 1234.567 )"

gdb --batch -ex "print/f (float *) 0x449A5225"

但它不适用于 double 和 long double(“无效转换”),而且 gdb 也会截断大于 32 位的值,因此 double 和 long double 。

有gdb专家帮忙吗?

最佳答案

我用 Python 找到了自己的解决方案:

# python -c 'import struct; print "%#x" % struct.unpack("I", struct.pack("f", 1234.567))'
0x449a5225

# python -c 'import struct; print "%#x" % struct.unpack("Q", struct.pack("d", 1234.567))'
0x40934a449ba5e354

# python -c 'import struct; print "%f" % struct.unpack("d", struct.pack("Q", 0x4094b2449ba5e354))'
1324.567000

# python -c 'import struct; print "%f" % struct.unpack("f", struct.pack("I", 0x449a5225 ))'
1234.566895

关于python - 将 float 重铸为 gdb 中的 ieee754 表示形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24453649/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com