• 4682阅读
  • 8回复

[提问]如何把LineEdit中的 IP地址存到数组里,附我写的代码 [复制链接]

上一主题 下一主题
离线455782920
 

只看楼主 倒序阅读 楼主  发表于: 2012-04-02
QByteArray ip=ui->setipLineEdit->text().toLatin1();
    QString str= ip.toHex().data();
    str = str.toUpper();
    QByteArray aa;
    aa.resize(4);
    aa[0] = str.mid(0,2);
    aa[1] = str.mid(3,2);
    aa[2] = str.mid(6,2);
    aa[3] = str.mid(9,2);
编译出错求助!!!!!!!!!!!!!
离线455782920

只看该作者 1楼 发表于: 2012-04-02
顶   下
离线nmiirq

只看该作者 2楼 发表于: 2012-04-02
str.mid(0,2)出来的值不是直接可以放到QByteArray中去的。
离线roywillow

只看该作者 3楼 发表于: 2012-04-03
QByteArray ip=ui->setipLineEdit->text().toLatin1();
之后ip会被赋值为一个类似255.255.255.255的字符串吧
    QString str= ip.toHex().data();
然后你给他来了个toHex(),之后str的返回值你知道是什么吗?
大概会是3235352e3235352e3235352e323535的字符串
因为'2'=0x32,'5'=0x35,'.'=0x2e
这样ip.toHex().data()返回的就是一个那一串数字字符串的c串,然后赋值给str……
难道不感觉奇怪么……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线455782920

只看该作者 4楼 发表于: 2012-04-03
那怎样才能转成十六进制 ,分别存到数组里?
离线455782920

只看该作者 5楼 发表于: 2012-04-03
引用第3楼roywillow于2012-04-03 08:29发表的  :
QByteArray ip=ui->setipLineEdit->text().toLatin1();
之后ip会被赋值为一个类似255.255.255.255的字符串吧
    QString str= ip.toHex().data();
然后你给他来了个toHex(),之后str的返回值你知道是什么吗?
大概会是3235352e3235352e3235352e323535的字符串
.......


大侠,请点拨!
离线roywillow

只看该作者 6楼 发表于: 2012-04-04
回 5楼(455782920) 的帖子
获得lineEdit中的ip字符串
调用QString的split()函数,以“.”为分隔,将ip地址分隔为一个QStringList,list中的每个元素就是ip地址中的一段
依次对这个QStringList里的每个项目调用toInt(),转换为数字,再强制转换为char,再添加到一个QByteArray中
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线455782920

只看该作者 7楼 发表于: 2012-04-08
以解决 ,鸣谢 roywillow !!
离线455782920

只看该作者 8楼 发表于: 2012-04-08
    QString ip=ui->setipLineEdit->text();
    QStringList  list1= ip.split(".");
    QByteArray aa;
    aa.resize(9);
    aa[0] = 0x02;
    aa[1] = 0x02;
    aa[2] = 0x05;
    aa[3] = list1.at(0).toInt();
    aa[4] = list1.at(1).toInt();
    aa[5] = list1.at(2).toInt();
    aa[6] = list1.at(3).toInt();
    aa[7] = aa[3]^aa[4]^aa[5]^aa[6];
    aa[8] = 0x03;

    tcplink->write(aa);
快速回复
限100 字节
 
上一个 下一个