【发布时间】:2019-12-27 02:24:08
【问题描述】:
这可能是一个简单的问题,但我不确定为什么我没有做对。 我有 unsigned char buf,我需要将其数据写入输出文件 f_out。当我写如下:
f_out << buf;
我得到正确的数据。
但是我想逐行写入数据,32 位(char)一行,因为数据是二进制数。我使用了以下,但我得到了完全不同的数据:
for (int i = 1; i < Buff_size; i++) {
for (int j = 1; j <= 32; j++) {
f_out << buf[i];
}
f_out << endl;
}
【问题讨论】:
-
使用的编码是什么?
-
这个循环
for (int j = 1; j <= 32; j++) { f_out << buf[i]; }将写入每个buf[i]32 次b> - 这就是你想要的吗? -
哦,是的,现在我知道我在那里做了什么 :) 我已经修好了,现在可以正常工作了!非常感谢。 for (int i = 0; i
-
@MHDAnasAlsakkal 你有一个缓冲区溢出。您需要在循环中使用
<而不是<=。此外,您可以使用%运算符代替j变量。不过,我会使用完全不同的逻辑:int loops = Buff_size / 32; int offset = 0; for (int i = 0; i < loops; ++i, offset += 32) { f_out.write(&buf[offset], 32); f_out << endl; } int remaining = Buff_size % 32; f_out.write(&buf[offset], remaining);