【发布时间】:2017-06-18 20:10:11
【问题描述】:
我有一个 unsigned long long 变量,我想将其写入二进制文件。但是,我需要忽略所有为零的前导字节。
这意味着
unsigned long long toWrite = 4;
应该将 0x04 而不是 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x04 写入流。
#include <fstream>
int main(){
std::ofstream out("test.txt", std::ios::binary);
unsigned long long toWrite = 4;
out << cutoffZeroBytes(toWrite);
out.close();
return 1;
}
我正在考虑让cutoffZeroBytes 成为一个返回char* 的函数。但是如果中间有零个字节(例如 0x03 0x00 0xf1),那么我认为我无法将它写入流,因为 0x00 决定了 char 数组的结尾。
我在这里有点不知所措,需要一些帮助。
【问题讨论】:
-
你可以返回一个 char * 和一个长度。将 char * 视为字符串只是一种约定,而不是要求。将其视为指向 char 数组的指针同样有效。不过,您不能使用 operator
-
另外,如果值实际上是 0,你期望什么输出?
-
最小化为单字节,解决0的问题
-
@J3STER 是的,但这不是问题所说的。
-
@J3STER 我认为山姆的回答是合理的。