• 5297阅读
  • 5回复

QByteArray的问题 [复制链接]

上一主题 下一主题
离线amwzl
 

只看楼主 倒序阅读 楼主  发表于: 2010-04-07
    QByteArray block;
    QDataStream out(&block,QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_6);  

    int len = 500;
    char * buffer = new char [len];
    for(int i=0;i<len;i++){
          buffer = 0x55;
          out<<buffer ;
    }

    qDebug()<<block.size();

    输出怎么会是2000??
[ 此帖被amwzl在2010-04-07 16:24重新编辑 ]
离线amwzl

只看该作者 1楼 发表于: 2010-04-07
改成 out<<quint8(buffer);输出就成500了

默认是32位的,竟然。
离线yangfanxing
只看该作者 2楼 发表于: 2010-04-07
QByteArray花2个Byte存储一个字符(包括中文等)
PHPWind好恶心。。。不想看这种界面。。。
离线午小夜

只看该作者 3楼 发表于: 2010-04-08
我想知道您的需求?
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线dbzhang800

只看该作者 4楼 发表于: 2010-04-08
引用楼主amwzl于2010-04-07 16:05发表的 QByteArray的问题 :
    QByteArray block;
    QDataStream out(&block,QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_6);  
    int len = 500;
    char * buffer = new char [len];
    for(int i=0;i<len;i++){
          buffer = 0x55;
          out<<buffer ;
    }
    qDebug()<<block.size();
    输出怎么会是2000??
.......

这? 你 能不能先告诉大家内存0x55地址处究竟是什么东西?
为何要将该处的东西作为char * 串连续送500次到 buffer??

改成 out<<quint8(buffer);输出就成500了

默认是32位的,竟然。

你送进去500个字节,长度当然是500。
和 32 位 又有什么关系?
离线hetal

只看该作者 5楼 发表于: 2010-04-13
你qDebug()<<sizeof(int),应该是4(32位操作系统)吧,4*500 不就2000么。
快速回复
限100 字节
 
上一个 下一个