C/C++ unsigned char*类型
C++ unsigned char *是表示无符号字符指针的意思。
细节如下:
char 前面添加unsigned表示是无符号的字符,也就是不可以存储负数;
在数据类型后面加*表示指针的意思;
指针是C和C++的一种特色数据类型,可以方便的访问内存,也可以通过指针自己控制堆的分配与使用。
此外:
在C中,默认的基础数据类型均为signed,如定义变量为int,long等,都为有符号的。如果要定义无符号类型,必须显式地在变量类型前加unsigned。
char vs unsigned char
相同点:在内存中都是一个字节,8位(2^8=256),都能表示256个数字
不同点:char的最高位为符号位,因此char能表示的数据范围是-128~127,unsigned char没有符号位,因此能表示的数据范围是0~255
实际使用中,如普通的赋值,读写文件和网络字节流都没有区别,不管最高位是什么,最终的读取结果都一样,在屏幕上面的显示可能不一样。
但是要把一个char类型的变量赋值给int、long等数据类型或进行类似的强制类型转换时时,系统会进行类型扩展,这时区别就大了。对于char类型的变量,系统会认为最高位为符号位,然后对最高位进行扩展,即符号扩展。若最高位为1,则扩展到int时高位都以1填充。对于unsigned char类型的变量,系统会直接进行无符号扩展,即0扩展。扩展的高位都以0填充。所以在进行类似的操作时,如果char和unsigned char最高位都是0,则结果是一样的,若char最高位为1,则结果会大相径庭。
参考文章:c语言中 char* 和 unsigned char* 的区别浅析
缘由
yolo.cc里:
C/C++ unsigned char*类型相关推荐
- 程序中unsigned char 类型的意义
对于无符号数来说,左移和右移都是用的逻辑移位,即左移低位空出的补0,右移高位空出的补0: 对于有符号数来说,用的是算术移位,左移多出的会移进符号位,低位空出的补0,右移空出的高位补符号位. 例如: c ...
- 打印不同对象的字节表示 ( 对int*强制转换成unsigned char*的理解 )
此文章参考<深入理解计算机系统>P31. 先看如下代码: 12345的十六进制表示为:0x00003039 1 #include <stdio.h> 2 3 int main ...
- 8位alu运算器(vhdl语言)_C语言中signed char类型,能表示-128到127,为什么负数多一位?...
初学者在学习C语言,谈到不同数据类型时,一般都能理解 unsigned 和 signed 的区别,无非就是有无符号而已.但是对于 signed 数据类型的数据范围,初学者却常常会感到迷惑. 对于 si ...
- 【错误记录】Android NDK 编译报错 ( no known conversion from ‘unsigned char *‘ to ‘const char *‘ )
文章目录 一.报错信息 二.解决方案 一.报错信息 在 Visual Studio 2019 中编译 Android NDK , 构建方式参考 [Android 逆向]Android 进程注入工具开发 ...
- C语言之unsigned char和uint8_t
1.问题 今天搞openssl里面的客户端和服务端生成的随机数时候,PC端用的uint8_t数据类型,我用的是unsigned char类型,特么这不日了狗,不一样,后来问了pc端的人,和到网上查了下 ...
- 借助opencv将unsigned char数组显示为图像
在用C或者C++做图像处理程序时,经常需要把结果图显示出来看看效果,这时候可以借助opencv的Mat类型,如下: Mat gray1_mat(rect_height, rect_width, CV_ ...
- unsigned char与char的区别
两者都作为字符用的话是没有区别的,但当整数用时有区别: char 整数范围为-128到127( 0x80__0x7F), 而unsigned char 整数范围为0到255( 0__0xFF ) ...
- 将unsigned char字符串以16进制的字符串显示
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned ch ...
- 监测环境温度遇坑记之unsigned char char
在项目测试阶段呢,前一篇文章已经成功接收到了数据,但是对接收到的数据不是很满意.客户端发送的报文头是0xfd 0xfd,报文尾是0xdf 0xdf ,但是服务器端接收到的报头报尾却是0xffffff ...
最新文章
- 窃隐私、放高利贷,输入法的骚操作真不少!
- Ninject + UnitTesting + Moq
- 用上 RocketMQ,系统性能提升了 10 倍!
- 4.2.3 减少磁盘延迟时间的方法
- 如何利用Gitlab-CI持续部署到远程机器?
- bom实现方块移动_从0开始实现一个俄罗斯方块
- redis-full-check
- loadrunner12 + ie11 无internet, 代码中文乱码
- [UI] 精美UI界面欣赏[4]
- Delphi7学习第一天
- [Vue] Vue后台模板汇总
- Dreamweaver 网页设计作业静态模板
- 删除 Win10 资源管理器中的6个文件夹
- 如何找短视频素材?这些工具可以帮到你
- c语言fscanf 发生段错误,亚嵌教育
- codevs1013 求先序排列 string黑科技[三星]
- 关于sPLS analysis的一些学习
- 2022各大厂商护网面试题
- linux 后台不挂断地运行命令
- Apple推荐的2020年最佳应用程序已经出炉
热门文章
- 搭建简易Linux局网服务器
- java中的输入流类,Java数据输入流类
- 树莓派云音乐c语言,基于树莓派的红外遥控版网易云音乐播放器
- python上机报告出现的问题和解决方法_关于发现存在问题及解决方法的报告
- ALV输出的时候,输出字段内容前面的空格
- 解决MySql 数据库 提示:1045 access denied for user 'root'@'localhost' using password yes
- 销售订单定价-客户取值
- 如何查看oracle trace 文件
- 系统上线后关键用户的工作建议
- ckeditor4 php,CKEditor 4自定义下拉列表