- 主题:string用fstream写 想写成二进制 失败了
这让我想起一个同事,我让他写一个简单的程序,通过串口输出一些指令和数据,比如0x02, 0x0A什么的。他写的是把这些数据变成0x30, 0x32, 0x30, 0x41,就是这些字符串的ASCII值。我要的是原来的数啊,02, 0A,他怎么就是不懂呢?
【 在 scanworld 的大作中提到: 】
: fstream a("./file.dat", ios_base::out | ios_base::binary);
: string b = "fasdfa;l3242;ljafd";
: a.write(b.c_str(), b.length());
: ...................
--
FROM 73.158.253.*
确切的讲,你想要的是验证文件是否能够保存任意内容,比如: 不可显示的字符。
课显示的字符包括标点符号,数字,字母大小写等。那么那些字符不可显示呢?很简单,char a=5;这个就是不可显示的字符,它不是'5',而是5.'5'其实是48+5.
如果你把这个char a输出到文件,就可以看到它是个奇怪的字符。或者换一些其他都可以,从1到26试试。其中0x0A0x0D是回车换行。
【 在 scanworld 的大作中提到: 】
: 对 差不多的意思
: 但是印象里二进制写到文件里的内容 文本文件打开不是无法直接显示的吗 不是直观的字符也不是 ascii码的形式
:
--
FROM 73.158.253.*
我要的就是原来的数值,比如03, 05什么的,他非得发送0x30, 0x33, 0x30, 0x35懂了吗?
【 在 kuwo 的大作中提到: 】
: 原来的数值就是他本身啊,什么都不用做就行了。你要的是可显示字符还是原先的值?如果是原先的值就不需要什么函数,否则就是你同事用ascii码的可显示值,感觉你自己搞错了
: - 来自「最水木 for iPhone 7」
--
FROM 73.158.253.*