printf没有打印二进制。
自己写了一个,先转成16进制,再转成二进制。
也可以先转成8进制,再转成二进制。
我测试环境double是8个字节,64位长度。
*/
/*打印出double在内存的中的每一个二进制位
*/
void DoubleToString(double *p_dl){
char c_dl_16[16+1];
char c_dl_64[64+1];
memset(c_dl_64,'\0',sizeof(c_dl_64));
unsigned char *t = (unsigned char *)p_dl;
int charCount = sizeof(double) ;
memset(c_dl_16,'\0',sizeof(c_dl_16));
if (t == NULL)
return;
int i=0;
for(i=0;i<charCount;i++){
sprintf(c_dl_16+i*2,"%02x",t[i]);
}
/*printf("\n"); */
printf("[%s]\n",c_dl_16);
/*对每一位,将十六进制转换为二进制的字符串*/
char tmpc[4+1];
for(int j=0;j<16;j++){