Qt总结之十四:uint8_t / uint16_t / uint32_t /uint64_t数据类型详解
一、C++基础数据类型
(一)如下图
C++的主要数据类型,主要分为三类:布尔型,整型(char型从本质上说,也是种整型类型,它是长度为1的整数,通常用来存放字符的ASCII码),浮点型。
(二)byte(字节)和bit(位)
普及如下:
byte为字节,bit为位,1byte=8bit
这两者应用的场合不同。通常用bit来作数据传输的单位,因为物理层,数据链路层的传输对于用户是透明的,而这种通信传输是基于二进制的传输。在应用层通常是用byte来作单位,表示文件的大小,在用户看来就是可见的数据大小。比如一个字符就是1byte,如果是汉字,则是2byte。
Bit意为“位”或“比特”,是计算机运算的基础,属于二进制的范筹;
Byte意为“字节”,是计算机文件大小的基本计算单位;
(三)ASCII,Unicode和UTF_8之间的前生后世
https://blog.csdn.net/Aidam_Bo/article/details/85780365
二、uintx_t
而 *_t是typedef定义的表示标志,是结构的一种标注。即我们所看到的 uint8_t、uint16_t、uint32_t都不是新的数据类型,而是通过typedef给类型起得别名。(如C语言中没有bool类型,有的程序员用int表示,有的用short表示,则利用统一的定义来表示bool,是比较好的。typedef char bool)。
来看官方给我们的 typedef:
/* stdint.h standard header */
#pragma once
#ifndef _STDINT
#define _STDINT
#ifndef RC_INVOKED
#include <crtdefs.h>typedef signed char int8_t;
typedef short int16_t;
typedef int int32_t;
typedef long long int64_t;/*Unsigned*/
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
则很明显的看出:uint8_t是用1个字节表示的;uint16_t是用2个字节表示的;uint32_t是用4个字节表示的。
则对应的输出为:
uint16_t %hu
uint32_t %u
uint64_t %llu
注意:
必须小心 uint8_t 类型变量的输出,例如如下代码,会输出什么呢?
uint8_t fieldID = 67;
cerr<< "field=" << fieldID <<endl;
结果发现是:field=C 而 不是我们所想的 field=67
这是由于 typedef unsigned char uint8_t;
uint8_t 实际是一个 char, cerr << 会输出 ASCII 码是 67 的字符,而不是 67 这个数字.
因此,输出 uint8_t 类型的变量实际输出的是其对应的字符, 而不是真实数字.
若要输出 67,则可以这样:
cerr<< "field=" << (uint16_t) fieldID <<endl;
结果是:field=67
同样: uint8_t 类型变量转化为字符串以及字符串转化为 uint8_t 类型变量都要注意, uint8_t类型变量转化为字符串时得到的会是ASCII码对应的字符, 字符串转化为 uint8_t 变量时, 会将字符串的第一个字符赋值给变量.
例如如下代码:
#include <iostream>
#include <stdint.h>
#include <sstream>
using namespace std;int main()
{uint8_t fieldID = 67;// uint8_t --> stringstring s;ostringstream strOStream;strOStream << fieldID;s = strOStream.str();cerr << s << endl;// string --> uint8_ts = "65"; stringstream strStream;strStream << s;strStream >> fieldID;strStream.clear();cerr << fieldID << endl;
}
上述代码输出的是:
C
6
Qt总结之十四:uint8_t / uint16_t / uint32_t /uint64_t数据类型详解相关推荐
- uint8_t / uint16_t / uint32_t /uint64_t 数据类型大总结
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...
- uint8_t / uint16_t / uint32_t /uint64_t 数据类型集中网上的解释
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型,在嵌入式编程中经常会遇见. 首先 #define uint unsigned int; int和uin ...
- C 语言编程 — uint8_t / uint16_t / uint32_t /uint64_t
目录 文章目录 目录 uint8_t\uint_16_t\uint32_t\uint64_t 格式化输出 uint8_t\uint_16_t\uint32_t\uint64_t 在 C99 标准(IS ...
- uint8_t / uint16_t / uint32_t /uint64_t 有什么区别?
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...
- [u]intN_t - uint8_t, uint16_t, uint32_t, uint64_t
uint8_t, uint16_t, uint32_t, uint64_t 在c/c++中,很多以_t结尾的数据类型,如uint8_t,size_t等等,乍一看什么鬼,实际上_t的意思就是typede ...
- uint8_t / uint16_t / uint32_t /uint64_t 的简单介绍
uint8_t / uint16_t / uint32_t /uint64_t 的简单介绍 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型,不过 ...
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型? 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...
- 安卓判断服务器返回的状态码,关于服务器返回的十四种常见HTTP状态码详解
原标题:关于服务器返回的十四种常见HTTP状态码详解 HTTP状态码 状态码是由3位数字和原因短语组成的(比如最常见的:200 OK),其中第一位数字表示响应类别,响应类别从1到5分为五种 add:其 ...
最新文章
- mysql oracle sqlit_【Go语言】连接数据库SQLite、MySQL、Oracle
- 单例模式在JDK 应用的源码分析||单例模式注意事项和细节说明
- Python中修改字符串的四种方法
- 无差异曲线matlab算法,引入Matlab提高经济类线性代数应用能力
- 使用jedis访问redis
- mockjax MOCK.js的拦截ajax请求
- [模拟] leetcode 14 最长公共前缀
- MobileNetV2: Inverted Residuals and Linear Bottlenecks
- Linux常用命令 创建文本 清屏操作
- Vue生命周期-手动挂载理解
- 锂离子电池性能测试软件,锂离子电池的常规性能测试方式介绍
- PDF如何排版骑马钉打印
- 简单的外网映射工具natapp操作
- 2020年7月PAT甲级真题 The Judger
- 快来喝杯Java(初级第一章)
- php相同数据合并单元格,jQuery_基于jQuery的合并表格中相同文本的相邻单元格的代码,ONE
已经生成的数据表格大致 - phpStudy...
- optimizer(三) Adam 系列
- pcsx2 linux双显卡,PCSX2模拟器下载-PCSX2(PS2模拟器)官方下载-PC下载网
- APP测试的入门书籍有哪些?
- mysql添加user表中的用户