QByteArray 转为 int 详细说明
QByteArray 转为 int 详细说明
QByteArray有提供toInt()函数将 QbyteArray中的数据转为int类型。文章中涉及到的int类型都是4个字节。
toInt()用法:
一、QByteArray保存的是字符串,直接调用 toInt() 就可以了。需要注意的是不能超出int类型的大小范围,不然会转换失败。
- 保存的是十进制的数
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
- 保存的是十六进制的数:
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 详细说明相关推荐
- char 转为 int 类型
一字符串,String="1234567": 把第i个数取出来时是char型的 如何把char型转换成int型? 先将char转为string类型,再转为int类型 public ...
- php字符串转int,php怎样将字符串转为int类型
php将字符串转为int类型的方法:可以利用内置函数intval()来实现.intval()函数用于获取变量的整数值,如果执行成功则返回integer值,如果执行失败则返回0,例如:[intval(& ...
- 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) 以 ...
- python numpy.ndarray中的数据转为int型
首先了解内容与类型 >>>print(a)(array([[0.01124722],[0.21752586],[0.05586815],[0.03558792]]), array([ ...
- Object类型数据转为int型数据
1.Object转int和Long型转int一样 Object xxx= 123; int one = Integer.pasreInt(String.valueOf(xx)); 基本思路:先讲ob ...
- C语言字符串 string强转为int
C语言字符串 string强转为int 直接调用C 库函数 - atoi() 需要加C 标准库 <stdlib.h> C 库函数 int atoi(const char *str) 把参数 ...
- python 使用字节流bytes格式读取文件转为int格式,再转为0,1字符串格式
python 使用字节流bytes格式读取文件转为int格式,再转为0,1字符串格式 with open('test.jpg', 'rb') as src:t = src.read(1) # 读进1B ...
- NSData转为Int
在Socket传输中,收到的数据一般都是NSData型. 但是我们要对数据进行分析,分解出长度等信息,然后转为Int型,这里就需要转换.. swift代码如下: var len:Int? data.g ...
- ListInteger转为int[]
List/ArraysList转为int[] 最近做题遇到的问题:如何将List转为int[]? // List<Integer> 转 Integer[] Integer[] intege ...
最新文章
- ViewPager的简单使用说明
- MFC中进度条控件的使用方法
- Elasticsearch query和filter过滤有什么不同
- 一个深度学习痴呆选手对AlexNet网络架构的一些理解
- tinymce 工具栏 不显示_winform中MenuStrip主菜单、工具栏、状态栏、托盘、其他控件...
- 虚拟交换机软件_千兆交换机如何识别优劣,千兆交换机识别方法!
- 23. SQL -- SQL Server安装,运行架构,管理SQL
- SAS9.2安装及遇到的问题。安装时提醒Sas安装数据SID文件无效
- fedora linux五笔输入法,ArchLinux 安装五笔输入法
- Postman的安装
- aspUpload有组件上传文件
- 安卓:股票筛选及分析系统
- C措辞教程第二章: 数据范例、运算符、表达式(4)
- elasticsearch 分词器器读写分词
- 大三下,我们该做什么?一篇被转万次的日志,你值得一看
- Po.et正式推出为出版商打造的API层应用—Frost
- 【Western Digital】常用固件模块编号及作用介绍
- FPGA图像处理HLS实现RGB转灰度,提供HLS工程和vivado工程源码
- matlab diary on,matlab-dlmwrite跟diary输出数据
- 亲民地理-第45期-西雅图城市大学
热门文章
- 青岛智慧城市建设以人为本 勾勒未来图景
- 旷视研究院出席全球计算机多媒体顶会ICME 2019
- 高科路由器有虚拟服务器设置吗,高科(GAOKE)无线路由器怎么设置
- 医疗器械图纸管理软件,图文档管理解决方案
- UEFI学习---EDK II开发环境的搭建
- 微软官方win10系统安装u盘启动盘制作
- 编程语言中 按位取反操作怎么计算
- 《Adobe After Effects CS6完全剖析》——定时与重定时
- MIPCMS V3.1.0 远程写入配置文件Getshell过程分析(附批量getshell脚本)
- 提取excel中的图片