十六进制的无符号长整数的值是多少

Ish*_*eet -2 c embedded floating-point printf

我有这个变量

unsigned long long latitude = 29.47667;
Run Code Online (Sandbox Code Playgroud)

当我将此值转换为这样的数组时

    ar[7] = (uint8_t)((latitude >> 56) & 0xFF);
    ar[6] = (uint8_t)((latitude >> 48) & 0xFF);
    ar[5] = (uint8_t)((latitude >> 40) & 0xFF);
    ar[4] = (uint8_t)((latitude >> 32) & 0xFF);
    ar[3] = (uint8_t)((latitude >> 24) & 0xFF);
    ar[2] = (uint8_t)((latitude >> 16) & 0xFF);
    ar[1] = (uint8_t)((latitude >> 8) & 0xFF);
    ar[0] = (uint8_t)(latitude & 0xFF);
Run Code Online (Sandbox Code Playgroud)

然后使用tcp socket将其发送到服务器.当我发送时,我以十六进制打印值,然后我0x1d全部休息.

如何在将unsigned long long转换为int时将确切的值发送到服务器.

Yu *_*Hao 6

unsigned long long latitude = 29.47667没有多大意义,unsigned long long是一个整数类型.所以变量只获得截断的整数29.

这就是为什么你只得到0x1d,这只是29十六进制.