gpt4 book ai didi

c++ double 到字节数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:45 25 4
gpt4 key购买 nike

我想将double 数字转换为字节数组(unsigned char*)

std::vector<unsigned char*> v;

for (int i = 0; i < 5; i++)
{

double a = 3.14+i;
double b = 4.44+i;

v.push_back((unsigned char*)&a);
v.push_back((unsigned char*)&b);
}

for (int i = 0; i < v.size(); i++)
std::cout << *((double*)v.at(i)) << std::endl;

我已经这样做了,但它总是给我最后一组数字。

当前输出:

7.148.447.148.447.148.447.148.447.148.44

它应该是怎样的:

3.144.444.145.445.146.446.147.447.148.44

最佳答案

std::vector<unsigned char*>是指向 unsigned char 的指针的 vector (列表) .这不是您想要的。

我猜你想要 std::vector<unsigned char> (这里没有指针)。

对于要添加到列表中的每个数字,您必须向其添加几个(通常为 8 个)字节。为了做到这一点,最简单的方法是:

const unsigned char* ptr = reinterpret_cast<const unsigned char*>(&a);
for (size_t i = 0; i < sizeof(double); ++i)
v.push_back(ptr[i]);

从这样的字节数组中提取一个数字:

for (int i = 0; i < v.size(); i++) {
double number;
memcpy(&number, &v.at(i * sizeof(double)), sizeof(double));
std::cout << number << std::endl;
}

关于c++ double 到字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25164664/

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