• 7272阅读
  • 14回复

我不懂用专业术语表达,只能以以下语言表达,大家帮帮看 [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2009-10-22
我想把1 2 3 4 5 这五个int类型的值按顺序保存成一个文件

最终结果是,数据在硬盘上的存储内容按顺序依次为

          位置: 第1字节   第2字节    第3字节  第4字节   第5字节  
内容(二进制码):00000001  00000010   00000011  00000100   00000101   
[ 此帖被iiiyyyhhhsss在2009-10-23 08:53重新编辑 ]
离线iiiyyyhhhsss

只看该作者 1楼 发表于: 2009-10-22
大家帮帮看,给点提示,有做过类似这个的,贴点代码上来更好啊,这个急啊
离线iiiyyyhhhsss

只看该作者 2楼 发表于: 2009-10-22
这个是不是就是叫做二进制文件?
离线dbzhang800

只看该作者 3楼 发表于: 2009-10-22
你描述的确实非常不清楚

如果你只是把 2 保存成 "00000010" 这样的文本,那么

QString arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

如果你需要 2 在文件内占一个字节,那么直接写入一个字符到文件 '\x02'
离线iiiyyyhhhsss

只看该作者 4楼 发表于: 2009-10-22
或者我这样描述清楚一点:

我想把2存放到QByteArray里,使得QByteArray里的内容为00000010,这样应该清晰一点吧
离线dbzhang800

只看该作者 5楼 发表于: 2009-10-22
还是不清楚,00000010 究竟是8个字节 “00000010” 还是一个 ‘\x02’
离线iiiyyyhhhsss

只看该作者 6楼 发表于: 2009-10-22
是一个字节啊
离线iiiyyyhhhsss

只看该作者 7楼 发表于: 2009-10-22
其实我想把一个整形a存放到QByteArray里面,就是说以二进制存放到QByteArray里面

例如当a=3时,QByteArray里面的内容为00000011(一个字节),
离线dbzhang800

只看该作者 8楼 发表于: 2009-10-22
引用第7楼iiiyyyhhhsss于2009-10-22 22:06发表的  :
其实我想把一个整形a存放到QByteArray里面,就是说以二进制存放到QByteArray里面
例如当a=3时,QByteArray里面的内容为00000011(一个字节),



QByteArray().append('\x03');

!!
离线mecland
只看该作者 9楼 发表于: 2009-10-22
3楼正解, 使用QString arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const,
然后将QString 转到QByteArray就可以了
同样可以使用int toInt ( bool * ok = 0, int base = 10 ) const
再转换回来
[ 此帖被mecland在2009-10-22 23:11重新编辑 ]
离线iiiyyyhhhsss

只看该作者 10楼 发表于: 2009-10-23
那么整形int a=3与字符'\x03'之间又是如何转换呢?a里的值不一定是3噢,它里面的值将不断改变
离线dbzhang800

只看该作者 11楼 发表于: 2009-10-23
引用第10楼iiiyyyhhhsss于2009-10-23 08:41发表的  :
那么整形int a=3与字符'x03'之间又是如何转换呢?a里的值不一定是3噢,它里面的值将不断改变


实际上不需要转换

char b = 3;
char b = '\x03';
一样
离线cspp

只看该作者 12楼 发表于: 2009-10-23
我只是在想256他怎么存?
离线dbzhang800

只看该作者 13楼 发表于: 2009-10-23
引用第12楼cspp于2009-10-23 10:29发表的  :
我只是在想256他怎么存?


不用想,你试一下就知道了。
long 赋给 int, int 赋值 short 等都有相同的问题,就是简单的截断吧
离线iiiyyyhhhsss

只看该作者 14楼 发表于: 2009-10-23
我成功了
int a=3;
QByteArray byteArray=QString().append(char(a)).toUtf8();


int b=int(byteArray.at(0));  //此时b=3;

谢谢!
快速回复
限100 字节
 
上一个 下一个