gpt4 book ai didi

c++ - 从内存中提取 double 的字节值

转载 作者:太空狗 更新时间:2023-10-29 20:06:15 38 4
gpt4 key购买 nike

我正在尝试从计算机内存中提取 double 值的字节值。这样做的原因是准确性,因为向用户表示的最终值进行了一些舍入。

理想情况下,我希望能够从数字中提取符号、指数和尾数(IEEE 754 标准)

据我所知,转换为 unsigned char 是可行的方法。我有以下代码片段(从别处偷来的),但我不相信结果 - 没有任何整数值的字节输出:

double d = 2;
unsigned char *p = (unsigned char*)&d;

谁能指导我朝着正确的方向准确提取双数的字节表示,或者就如何进行提出任何建议/意见?

最佳答案

你做得对。您现在可以将 p 视为数组 unsigned char[sizeof(double)]

例如:

for (int i = 0; i != sizeof(double); ++i)  printf("%02X ", p[i]);

对于 d = 0.125,这将打印 00 00 00 00 00 00 C0 3F。颠倒字节顺序并分解成部分,这是:

00111111 11000000 0 0 0 0 0 0
3F C0 0 0 0 0 0 0

0 01111111100 0...<52 times>...0
S Exponent Mantissa
+ 1023 - 3 1.0

指数字段的值为 1020,经过 1023 的偏差校正后指数为 −3,尾数为 1.0,包括隐含的前导 1。因此值为 2−3 = 1/8。

关于c++ - 从内存中提取 double 的字节值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8771783/

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