如何显示内存中的二进制数据
double d2=5.0;
double *p1=&d2;
双精度数据在内存中占用8个字节的空间,现在想把这8个内存空间的内容都显示出来。例如:现在p1=ox22ff78,现在想显示出ox22ff79,ox22ff7A,ox22ff7B.......等内存单元中的数据。
请高手帮忙如何来进行。另外,双精度的数据向整型数据的转换,是取高4个字节的数据还是取低四个字节的数据,(在dev当中)
[解决办法]
double d1=5.0;
double* pd1=&d1;
char* p=(char*)pd1;
for(int i=0;i <sizeof(double);i++){
printf( "%02X ", p[i]);
}
printf( "\n ");
这样子吗?
[解决办法]
#include <iostream>
#include <stdlib.h>
int main(int argc, char** argv)
{
using namespace std;
double d2=5.0;
char* p= reinterpret_cast <char*> (&d2);
for (int i=0; i <sizeof(double); ++i) printf( "%p: %02x \n ", &p[i], p[i]);
system( "pause ");
return 0;
}
[解决办法]
双精度的数据向整型数据的转换,是取高4个字节的数据还是取低四个字节的数据
===>
所有8字节都要参与!!
浮点数的表示与整数的表示是完全不同的!自己搜一下浮点数格式;)
[解决办法]
双精度的数据向整型数据的转换,是取高4个字节的数据还是取低四个字节的数据,(在dev当中)
浮点数据和整型数据的保存标准不一样。
整型数据就是其 补码;
浮点数据是按照 IEEE 浮点数标准存放的:
【引用】
目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算。这种结构是一种科学计数法,用符号、指数和尾数来表示,底数定为2——即把一个浮点数表示为尾数乘以2的指数次方再添上符号。下面是具体的规格:
````````符号位 阶码 尾数 长度
float 1 8 23 32
double 1 11 52 64
因此,
转换时候,浮点数据的所有字节都需要参加转换。
[解决办法]
如何显示内存中的二进制数据
==============
通过转换数据类型即可:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
double d2=5.0;
double *p1=&d2;
int i;
char tmp[10];
for(i=0; i <sizeof(double); i++)
{
itoa(*((char *)p1+i), tmp, 2); //转化获得 2进制数据串
puts(tmp); //输出
}
system( "pause ");
return 0;
}
[解决办法]
double dd=19.234;
long long * p=(long long *) ⅆ
printf( "%llx ",*p);
输出40333be76c8b4396 //16进制
取低字节
long l=*p;
printf( "%lx ",l);
输出6c8b4396 //16进制
怎么显示内存中的二进制数据
如何显示内存中的二进制数据doubled25.0double*p1&d2双精度数据在内存中占用8个字节的空间,现在想把这
