我正在使用 ostream 来序列化一个对象,但是 write() 方法似乎将额外的字节写入缓冲区。
uint32_t id1=0x01;
uint32_t id2=0xdeadbeef;
std::stringstream sink;
sink.write(reinterpret_cast<char *>(&id1),sizeof(uint32_t));
print(sink); //01000000 - Correct
sink.write(reinterpret_cast<char *>(&id2),sizeof(uint32_t));
print(sink); //FFFFFFEFFFFFFFBEFFFFFFADFFFFFFDE - why?!
//print defined as follows:
static void print(std::ostream &sink){
std::stringstream sk;
sk << sink.rdbuf();
std::string ss=sk.str();
for(unsigned int i=0;i<ss.length();i++){
printf("%02X", ss.c_str()[i]);
}
}
我很困惑为什么那些FFFF
被写入缓冲区。