Qt中int 、byte、Qbytearray、QString间的相互转化与网络数据传输

   QHostAddress serverip;
    serverip.setAddress(QString("192.168.0.7"));//这是人为指定ip地址的方法  

   QByteArray array;
    array.resize(2);
//    array[0]=0X00;
//    array[1]=0X04;
    bool ok;
    char byte1=QString("00").toInt(&ok,16);
    char byte2=QString("04").toInt(&ok,16);
    array[0]=byte1;
    array[1]=byte2;
    clientudp->writeDatagram(array,serverip,1111);//向1111端口写数据

上面是一段向udpsocket发送字节数组的代码,被注释掉的部分同样可用。char byte2=QString("04").toInt(&ok,16);表示将“04”按照16进制数解释为一个整型数(整型是一个数据类型,没有所谓的进制的区分,这里返回的整型默认用十进制表示),然后砍掉前24位赋值给一个char型。

另外网络中传输数据过程中(网线中)都是统一用的大端存储,但是数据发送前和接收后肯定字节序是保持一致的,不会颠倒,所以可以认为网络传输大小端方式是对程序猿透明的。(不过有时如果本地机器与此不符需要修正)。我在PC机与ARM上测试发现两者一致都是小端,无需修正

int hex=str.toInt(&ok,16);//将QString按照16进制数字来解释并返回十进制整型

QString(bytearray);//字节数组转换为QString

QByteArray::toHex(),fromHex;//不知道具体干嘛的

QByteArrayByte a=string.toAscii;//不知道具体干嘛的

欢迎高手指正

你可能感兴趣的:(网络,Qt,linux)