gpt4 book ai didi

c++ - 从文件中读取 4 个十六进制值并转换为 float

转载 作者:行者123 更新时间:2023-11-28 02:28:47 26 4
gpt4 key购买 nike

所以我一直在用 java 创建文件格式,但我知道我需要从 C++ 应用程序中读取该二进制文件。

二进制文件只包含大量由 4 个十六进制值表示的 float 。

十六进制示例数据:FF B6 DD 99 8D FF 39 61 0C 62 FF 42FF B6 DD 99 是一个 float ,8D FF 39 61 是一个 float 并且等等……

如何一次读取文件中的 4 个十六进制值并将其转换为 float ?

    std::fstream fRead;
fRead.open("path");

if (fRead.fail())
{
fRead.close();
}
else
{
char packetPart[3];

while (true)
{
fRead.read(packetPart, 4);
//std::cout << std::hex << std::setw(2) << std::setfill('0') << int(packetPart[0]) << std::endl;
//I was trying to display the hex value but it didn't work.
}
}

fRead.close();

最佳答案

试试这个:

ifstream inp_file("path", ios::binary);
//...
float my_float = 0.0f;
inp_file.read((char *) &my_float, sizeof(my_float));

这仅在您的平台具有与 Java 实现相同的浮点实现时才有效。

顺便说一句,在你的代码中:

char packetPart[3];

while (true)
{
fRead.read(packetPart, 4);

您正在将 4 个字符读取到 3 个字符的容量数组中。您应该问问自己,“第 4 个字符去哪儿了?”。

关于c++ - 从文件中读取 4 个十六进制值并转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29640087/

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