我知道如何使文件的标题更有效(对于赋值)但我想知道我是否可以执行实现。
是否可以从文件读取24位然后将其放入整数并保持其值?
我们说我有:
00000000 00000001 00000000 = 256
我可以从文件中读取它,将其分成三个字符,然后将这些字符组合成一个整数,以保留值256吗?这样最终结果将是:
00000000 00000000 00000001 00000000 = 256
答案 0 :(得分:0)
unsigned char a, b, c;
if (f >> std::noskipws >> a >> b >> c)
{
int n = a * 256 * 256 + b * 256 + c;
// use n...
}
else
std::cerr << "unable to read 3 characters from file\n";
答案 1 :(得分:0)
试试这个:
int combine_chars(char a, char b, char c) {
char arr[4] = {c, b, a, '\0'};
return *(int *)arr;
}
这假设整数的小端表示,这意味着最低有效字节具有最小的索引。基本上该函数创建一个包含尾随0的3个字符的数组(因为最重要的字节是'\0'
,或者最重要的8位是0)。最低有效字节为c
,然后由于示例中的第二个最低有效字节为1
,因此1 << 8
变为256
。内存中的数组是:
c b a '\0'
然后将其转换为整数指针(int *)
,然后将其取消引用到整数值并返回。
答案 2 :(得分:-1)
int getNumberFromStdin() {
std::string numberStr;
for (int i = 0; i < 3; ++i) {
std::string s;
std::cin >> s;
numberStr += s;
}
int number = 0;
for (const auto c : numberStr) {
number = (number << 1) + (c - '0');
}
return number;
}