打印字符*指针的完整数据? 我是C++中的新手,我想在写入文件之前显示char *指针的数据,但是输出只有5个第一字节。我不知道它出了什么问题。我正在使用android日志打印来显示日志
这是将数据写入文件的代码: 航海日志显示: WriteUnbuffered filename=/data/user/0/com.abc.helloleveldb/databases/leveldb/000003.log WriteUnbuffered size=37,加密前的数据=��� -> 只有50字节 但是数据写入完整文件,2对数据(test:ok和test1:hello)打印字符*指针的完整数据? 我是C++中的新手,我想在写入文件之前显示char *指针的数据,但是输出只有5个第一字节。我不知道它出了什么问题。我正在使用android日志打印来显示日志,c++,leveldb,C++,Leveldb,这是将数据写入文件的代码: 航海日志显示: WriteUnbuffered filename=/data/user/0/com.abc.helloleveldb/databases/leveldb/000003.log WriteUnbuffered size=37,加密前的数据=��� -> 只有50字节 但是数据写入完整文件,2对数据(test:ok和test1:hello) 如果你有什么建议,请帮助我。谢谢数据处的缓冲区内容看起来是二进制数据,不适合以%s格式传入 我建议逐个迭代每个字
如果你有什么建议,请帮助我。谢谢数据处的缓冲区内容看起来是二进制数据,不适合以
%s
格式传入
我建议逐个迭代每个字符(字节),并记录十六进制值,如下所示:
for(size_t i=0; i<size; ++i) {
LOGD("WriteUnbuffered data[%zu]=0x%02x", i, (data[i])&0xff);
}
for(size\u t i=0;i%d
的格式说明符不正确,这会导致未定义behaviour@M.M我看不出尺寸有任何问题。嗯,有一个问题,我已经指出了,这将是一个很好的解决办法it@M.M谢谢。我已将%d更改为%zu。%s”
需要一个以null结尾的字符串。您的数据是否以null结尾?如果不是,您应该避免使用任何依赖于以null结尾的缓冲区的C字符串函数。感谢您的帮助,我尝试打印十六进制,但它只是这样的数字:WriteUnbuffered data[0]=0xad,string=173 WriteUnbuffered data[1]=0x46,string=70写入缓冲数据[2]=0xd4,string=212写入缓冲数据[3]=0x20,string=32写入缓冲数据[4]=0x1e,string=30写入缓冲数据[5]=0x00,string=0写入缓冲数据[6]=0x01,string=1…您知道我是否要加密char*数据吗?@thanhlv值,如0x20,0x1e,是存储在缓冲区中的字节值。如果您知道这些字节值的含义,您应该能够解释输出。不清楚为什么要将缓冲区发送到日志。我也无法回答您是否需要o加密数据。您的问题只是关于如何记录缓冲区的所有字节。