xen*_*xen 0 c++ binary ofstream
我有一个定义如下的函数:
void AddHeadCode(std::ofstream &ostream, size_t length){
ostream.write((char*)length, sizeof(length));
ostream.seekp(0x10L, std::ios::beg);
}
Run Code Online (Sandbox Code Playgroud)
现在当它执行时,它会明显失败...因为char指针将无处指向.但我希望实际的指针值写入文件.像length = 19152然后当我在HEX编辑器中打开文件时,我应该在那里找到0d4a.
如何在c ++中实现?我有点迷失在这里......
获取length变量的地址,并将该地址传递给.write:
void AddHeadCode(std::ofstream &ostream, size_t length){
// by popular demand, removed C-style cast
ostream.write(reinterpret_cast<char*>(&length), sizeof(length));
ostream.seekp(0x10L, std::ios::beg);
}
Run Code Online (Sandbox Code Playgroud)
但是,这通常不是指写为"十六进制"的整数.这有时被称为将整数写为"二进制",或者只是写一个整数.
请注意,您所做的不是便携式练习.如果您在另一台计算机上(或者甚至在同一台计算机上,但使用不同的编译器)重新读取该值,则可能无法读取相同的值.