我需要做的是以二进制模式打开包含存储数据的文件,这些数据将被解释为整数。我看过其他示例,例如Stackoverflow-从char*数组中读取“整数”大小字节。,但我想尝试采用不同的方法(可能只是固执,或者愚蠢 :/)。我首先在十六进制编辑器中创建了一个简单的二进制文件,如下所示。
在以二进制模式打开此文件并将4个字节读入字符数组后,如何使用位运算使char[0]的位成为int的前8位,直到每个char的位都成为int的一部分?
00 00 00 47 00 00 00 17 00 00 00 41
如果将这12个字节分成3个整数,则应该等于71、23和65。在以二进制模式打开此文件并将4个字节读入字符数组后,如何使用位运算使char[0]的位成为int的前8位,直到每个char的位都成为int的一部分?
My integer = 00 00 00 00
+ ^ ^ ^ ^
Chars Char[0] Char[1] Char[2] Char[3]
00 00 00 47
So my integer(hex) = 00 00 00 47 = numerical value of 71
此外,我不知道我的系统的字节序在这里起到什么作用,所以有什么需要注意的吗?
以下是我目前的代码片段,我不知道接下来该怎么做。
std::fstream myfile;
myfile.open("C:\\Users\\Jacob\\Desktop\\hextest.txt", std::ios::in | std::ios::out | std::ios::binary);
if(myfile.is_open() == false)
{
std::cout << "Error" << std::endl;
}
char* mychar;
std::cout << myfile.is_open() << std::endl;
mychar = new char[4];
myfile.read(mychar, 4);
我最终计划处理从文件中读取浮点数和可能的自定义数据类型,但首先我需要更熟悉使用位运算。
谢谢。
ntohl()
来防止这种情况。 - Cameron