c++ double 到字节数组

标签 c++ arrays byte

我想将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.14
8.44
7.14
8.44
7.14
8.44
7.14
8.44
7.14
8.44

它应该是怎样的:

3.14
4.44
4.14
5.44
5.14
6.44
6.14
7.44
7.14
8.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/

相关文章:

c++ - 为什么编译不会失败?

c++ - 统计段落中出现次数最多的词

c++ - 原子读取值的函数?

javascript - jquery 使用单选按钮和复选框切换数组列表

json - 将字节数组设置为 json.RawMessage

java - 字符串到二进制,反之亦然 : extended ASCII

c++ - Visual Studio C++ - std::map 插入失败

javascript - 传入整数数组以创建新日期不起作用

java - 在 Java 中以简短的方式在数组中查找整数

java - 如何将 Java 中的字节存储到 PostgreSQL 中的 bytea 中?