QByteArray 转为 int 详细说明

QByteArray有提供toInt()函数将 QbyteArray中的数据转为int类型。文章中涉及到的int类型都是4个字节。

toInt()用法:

一、QByteArray保存的是字符串,直接调用 toInt() 就可以了。需要注意的是不能超出int类型的大小范围,不然会转换失败。
  1. 保存的是十进制的数

    bool ok;
    QByteArray arr("12345");
    qDebug() << arr.toInt(&ok, 10);QByteArray arr1("-12345");
    qDebug() << arr1.toInt(&ok, 10);
    

    输出:

    12345
    -12345
    

    如果超出了int的范围:

    bool ok = false;
    QByteArray arr("123451111111111111");
    qDebug() << arr.toInt(&ok, 10) << ok;
    

    输出:

    0 false
    
  2. 保存的是十六进制的数:
    bool ok;
    QByteArray arr("ABCDEF");
    qDebug() << arr.toInt(&ok, 16);
    

    输出:

    11259375
    

    当然不能超过7FFFFFFF,否则会转换失败:

    bool ok = false;
    QByteArray arr("80000000");
    qDebug() << arr.toInt(&ok, 16) << ok;
    

    输出:

    0 false
    
二、QByteArray保存的是数,需要先调用toHex() 再调用 toInt(),这种方法也不能超出int范围。但是这种方法只能正确转换16进制的数。
bool ok;
QByteArray arr;
arr[0] = 0xAB;
arr[1] = 0xCD;
arr[2] = 0xEF;
qDebug() << arr.toHex().toInt(&ok, 16);

输出:

11259375
三、自定义方法

这种方法比较灵活。

enum Endian
{LittileEndian,BigEndian
};int byteAraryToInt(QByteArray arr,  Endian endian = BigEndian)
{if (arr.size() < 4) return 0;int res = 0;// 小端模式if (endian == LittileEndian){res = arr.at(0) & 0x000000FF;res |= (arr.at(1) << 8) & 0x0000FF00;res |= (arr.at(2) << 16) & 0x00FF0000;res |= (arr.at(3) << 24) & 0xFF000000;}// 大端模式else if (endian == BigEndian){res = (arr.at(0) << 24) & 0xFF000000;res |= (arr.at(1) << 16) & 0x00FF0000;res |= arr.at(2) << 8 & 0x0000FF00;res |= arr.at(3) & 0x000000FF;}return res;
}

测试:

int main(int argc, char *argv[])
{QApplication a(argc, argv);QByteArray arr;arr[0] = 0x8F;arr[1] = 0xAB;arr[2] = 0xCD;arr[3] = 0xEF;qDebug() << "arr to int: " << bytesToInt(arr);return a.exec();
}

输出:

arr to int:  -1884566033

QByteArray 转为 int 详细说明相关推荐

  1. char 转为 int 类型

    一字符串,String="1234567": 把第i个数取出来时是char型的 如何把char型转换成int型? 先将char转为string类型,再转为int类型 public ...

  2. php字符串转int,php怎样将字符串转为int类型

    php将字符串转为int类型的方法:可以利用内置函数intval()来实现.intval()函数用于获取变量的整数值,如果执行成功则返回integer值,如果执行失败则返回0,例如:[intval(& ...

  3. list里每个元素字符串转为int;‘list‘ object is not callable;list中字符串改为int;字符串转为list;list每个int转为str;list转为字符串;

    一.string转为list 情景1:'[1, 2, 3, 4, 5, 6, 7, 8, 9]' (string) 怎么转回为 [1, 2, 3, 4, 5, 6, 7, 8, 9] (list) 以 ...

  4. python numpy.ndarray中的数据转为int型

    首先了解内容与类型 >>>print(a)(array([[0.01124722],[0.21752586],[0.05586815],[0.03558792]]), array([ ...

  5. Object类型数据转为int型数据

    1.Object转int和Long型转int一样 Object xxx= 123; int  one = Integer.pasreInt(String.valueOf(xx)); 基本思路:先讲ob ...

  6. C语言字符串 string强转为int

    C语言字符串 string强转为int 直接调用C 库函数 - atoi() 需要加C 标准库 <stdlib.h> C 库函数 int atoi(const char *str) 把参数 ...

  7. python 使用字节流bytes格式读取文件转为int格式,再转为0,1字符串格式

    python 使用字节流bytes格式读取文件转为int格式,再转为0,1字符串格式 with open('test.jpg', 'rb') as src:t = src.read(1) # 读进1B ...

  8. NSData转为Int

    在Socket传输中,收到的数据一般都是NSData型. 但是我们要对数据进行分析,分解出长度等信息,然后转为Int型,这里就需要转换.. swift代码如下: var len:Int? data.g ...

  9. ListInteger转为int[]

    List/ArraysList转为int[] 最近做题遇到的问题:如何将List转为int[]? // List<Integer> 转 Integer[] Integer[] intege ...

最新文章

  1. ViewPager的简单使用说明
  2. MFC中进度条控件的使用方法
  3. Elasticsearch query和filter过滤有什么不同
  4. 一个深度学习痴呆选手对AlexNet网络架构的一些理解
  5. tinymce 工具栏 不显示_winform中MenuStrip主菜单、工具栏、状态栏、托盘、其他控件...
  6. 虚拟交换机软件_千兆交换机如何识别优劣,千兆交换机识别方法!
  7. 23. SQL -- SQL Server安装,运行架构,管理SQL
  8. SAS9.2安装及遇到的问题。安装时提醒Sas安装数据SID文件无效
  9. fedora linux五笔输入法,ArchLinux 安装五笔输入法
  10. Postman的安装
  11. aspUpload有组件上传文件
  12. 安卓:股票筛选及分析系统
  13. C措辞教程第二章: 数据范例、运算符、表达式(4)
  14. elasticsearch 分词器器读写分词
  15. 大三下,我们该做什么?一篇被转万次的日志,你值得一看
  16. Po.et正式推出为出版商打造的API层应用—Frost
  17. 【Western Digital】常用固件模块编号及作用介绍
  18. FPGA图像处理HLS实现RGB转灰度,提供HLS工程和vivado工程源码
  19. matlab diary on,matlab-dlmwrite跟diary输出数据
  20. 亲民地理-第45期-西雅图城市大学

热门文章

  1. 青岛智慧城市建设以人为本 勾勒未来图景
  2. 旷视研究院出席全球计算机多媒体顶会ICME 2019
  3. 高科路由器有虚拟服务器设置吗,高科(GAOKE)无线路由器怎么设置
  4. 医疗器械图纸管理软件,图文档管理解决方案
  5. UEFI学习---EDK II开发环境的搭建
  6. 微软官方win10系统安装u盘启动盘制作
  7. 编程语言中 按位取反操作怎么计算
  8. 《Adobe After Effects CS6完全剖析》——定时与重定时
  9. MIPCMS V3.1.0 远程写入配置文件Getshell过程分析(附批量getshell脚本)
  10. 提取excel中的图片