gpt4 book ai didi

c++ - 将 double 转换并连接到字节数组

转载 作者:行者123 更新时间:2023-11-28 06:45:36 27 4
gpt4 key购买 nike

我正在尝试通过 TCP 网络发送 double 类型的各种数据,并希望将所有这些数据转换为单个字节数组。有任何建议也可以处理字节顺序可能存在的差异吗?

这是我尝试过的,但是正确的值没有存储在数组中:

// Byte-array
char buf[MAX_SIZE];
// Data
double data1, data2, data3, ... ;

// Convert and store all data
uint64_t d1 = htole64(data1);
memcpy(buf, &d1, sizeof(d1));

uint64_t d2 = htole64(data2);
memcpy(buf+8, &d2, sizeof(d2));

uint64_t d3 = htole64(data3);
memcpy(buf+16, &d3, sizeof(d3));
...

谢谢!

最佳答案

htole64 采用带有主机顺序字节的 uint64_t 并将其转换为带有小端字节的 uint64_t。如果您传递 double 值,它将首先转换为 integer64,我认为这不是您想要的。

你可能想做这样的事情:

uint64_t d1 = htole64( *(uint64_t*)(&data1) );

尽管如果这违反了某些 C++ 别名规则我不会感到惊讶。

关于c++ - 将 double 转换并连接到字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25066622/

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