Qt 数据类型转换 QString转Quint16

如使用了QString存储用户输入的数据,数据类型(指的是quint16, qint16, float, quint32, qint32等)可供用户自己选择的。而最终要使用的数据类型是quin16,下面是各种类型的转换。

一、QString(strValue) 转 quint16

1、用户输入的是16位正整数或者是16位BCD正整数 ,QString 的值转成 quint16,如下:

  bool isOk;
  quint16 dataValue = 0;
  dataVaule = strValue.toUShort(&isOk);   // isOk可以用来判断 QString转成quint16是否转换成功
  return dataValue;

2、用户输入的是16位整数,QString 的值转成 quint16,如下:

  bool isOk;
  quint16 dataValue = 0;
  qint16  tempValue = 0;
  tempValue = strValue.toShort(&isOk);   // isOk可以用来判断 QString转成qint16是否转换成功
  dataValue = tempValue;       //qint16再转成quint16
  return dataValue;

3、用户输入的是32位正整数或者是32位BCD正整数 ,QString 的值转成 quint16,如下:

  bool isOk;
  QList<quint16> dataList;
  quint16 dataValue = 0;
  quint32 uint32Value = 0;
  uint32Value = strValue.toUInt(&isOk);   // isOk可以用来判断 QString转成quint32是否转换成功
  if(isOk)
  {
    dataValue = uint32Value & 0x0000FFFF; //取低16位
    dataList<<dataValue;
    dataValue = uint32Value>>16;         //右移,取高16位
  }
  return dataList;

4、用户输入的是32位整数,QString 的值转成 quint16,如下:

  bool isOk;
  QList<quint16> dataList;
  quint16 dataValue = 0;
  qint32  int32Value = 0;
  int32Value = strValue.toInt(&isOk);   // isOk可以用来判断 QString转成qint32是否转换成功
  if(isOk)
  {
     dataValue = int32Value & 0x0000FFFF;   //取低16位
     dataList << dataValue;
     dataValue = int32Value << 16;        //右移16位, 取高16位的数据
     dataList << dataValue;
  }
  return dataList ;

5、用户输入的是32位浮点数,QString 的值转成 quint16,如下:

  bool isOk;
  QList<quint16> dataList;
  quint16 dataValue = 0;
  qint32  int32Value = 0;
  float   floatValue = 0;
  floatValue = strValue.toFloat(&isOk);   // isOk可以用来判断 QString转成Float是否转换成功
  if(isOk)
  {
     int32Value = floatValue;                //Float 转换为 qint32 
     dataValue = int32Value & 0x0000FFFF;   //取低16位
     dataList << dataValue;
     dataValue = int32Value << 16;        //右移16位, 取高16位的数据
     dataList << dataValue;
  }
  return dataList ;

你可能感兴趣的:(Qt,c++)