嗨我正在玩跟随,我想在Linux shell中转换IEEE754表示和十进制浮点数。我发现的唯一方法是:
gdb --batch -ex "print/x (float *) ( (float) 1234.567 )"
gdb --batch -ex "print/f (float *) 0x449A5225"
但它不适用于double和long double(“Invalid cast”),gdb也会截断大于32bit的值,所以double和long double。
是否有一些gdb专家可以提供帮助?
答案 0 :(得分:0)
我找到了自己的解决方案,使用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