Code Bye

问一下十进制数怎么转换成十六进制数

double FloatNumber= 13800100500;//转换十六进制数应为:00 00 00 03 36 8C D2 94
u8 Disp[8];
问一下怎么把FloatNumber转换十六进制数存在Disp[8]数组中?
解决方案

20

#include <stdio.h>
#include <string.h>
int main(void)
{
    double FloatNumber= 13800100500;
    unsigned long long num = FloatNumber;
    unsigned char disp[8];
    int i;
    printf("%lf\n", FloatNumber);
    printf("%llu\n", num);
    memcpy(disp, &num, 8);
    for (i = 8; i >= 0; i--)
        printf("%02X ", disp[i]);
    putchar(10);
    return 0;
}

在内存中,不论是十进制还是16进制,甚至是8进制等等,都是二进制的形式存储的,即以010101这种方式存储的。之所以有10进制或16进制,而是输出到终端的形式不同而已;
在内存中,浮点数和无符号整数存储的方式不同,原因是浮点数有小数。所以,可以先把浮点数的整数部分给一个变量(这个变量需要能够存放这个浮点数的整数部分),然后在memcpy至一个8字节缓存里,最后以16进制形式输出。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问一下十进制数怎么转换成十六进制数