首页 / 知识
关于c ++:什么是unsigned char?
2023-04-16 02:32:00

What is an unsigned char?
在C / C ++中, 在C ++中,有三种不同的字符类型:
如果要使用文本的字符类型,请使用不合格的
它也可以作为数字值,但未指定该值是被视为有符号还是无符号。注意通过不等式进行字符比较 - 尽管如果你将自己限制在ASCII(0-127),那么你就是安全的。 如果您使用字符类型作为数字,请使用:
"至少",因为C ++标准仅提供每种数值类型需要覆盖的最小值范围。
这是依赖于实现的,因为C标准没有定义
这里有一个很好的总结这个问题。
正如其他人在我发布之后提到的那样,如果你真的想要代表小整数,你最好使用
因为我觉得它确实需要,我只想说明C和C ++的一些规则(在这方面它们是相同的)。首先,如果有任何unsigned char对象,
现在,我与某人讨论了将int类型的值
这是一个数学描述。 C ++以模数微积分的形式描述它,它产生相同的规则。无论如何,不??能保证的是整数
实际上,这已经足够了!所以每当你想要一个
此外,转换不仅仅是截断高阶位。两个补码的幸运事件是它只是一个截断,但对于其他符号表示则不一定如此。 至于unsigned char的使用示例: unsigned char通常用在计算机图形中,这通常(尽管不总是)为每个颜色组件分配一个字节。通常看到RGB(或RGBA)颜色表示为24(或32)位,每个都是无符号字符。由于unsigned char值落在[0,255]范围内,因此这些值通常被解释为:
所以你最终会得到RGB红色为(255,0,0) - >(100%红色,0%绿色,0%蓝色)。 为什么不使用签名的字符?算术和位移变得有问题。正如已经解释的那样,签名的char的范围基本上被移动了-128。用于将RGB转换为灰度的非常简单且天真(通常未使用)的方法是平均所有三种颜色分量,但是当颜色分量的值为负时这会遇到问题。使用无符号字符算术时,红色(255,0,0)平均为(85,85,85)。但是,如果值是签名字符(127,-128,-128),我们最终会得到(-99,-99,-99),这将是我们的无符号字符空间中的(29,29,29),哪个不对。
如果要将字符用作小整数,最安全的方法是使用
在哪里
如果您使用的是C风格的字符串,只需使用 unsigned char是(无符号)字节值(0到255)。你可能会认为"char"是一个"字符",但它实际上是一个数值。常规"char"已签名,因此您有128个值,并且这些值使用ASCII编码映射到字符。但无论哪种情况,您在内存中存储的都是字节值。
就直接值而言,当已知值在 就其用途而言,标准允许POD(普通旧数据)的对象直接转换为unsigned char数组。这允许您检查对象的表示和位模式。 char或signed char不存在安全类型惩罚的相同保证。 unsigned char是所有技巧的核心。在ALL平台的几乎所有编译器中,unsigned char只是一个BYTE。无符号整数(通常)为8位。可以视为小整数或一包位。 另外,正如其他人所说,标准没有定义char的符号。所以你有3种不同的"char"类型:char,signed char,unsigned char。 unsigned char使用为常规char的符号保留的位作为另一个数字。这会将范围更改为[0 - 255]而不是[-128 - 127]。 通常,当您不需要符号时,将使用未签名的字符。当处理char作为字节而不是将其作为数字使用时,这将在处理诸如移位(移位扩展符号)等事情时产生影响。 如果你喜欢使用各种类型的特定长度和签名,你可能最好使用uint8_t,int8_t,uint16_t等,因为他们完全按照他们的说法行事。 一些谷歌搜索发现了这一点,人们对此进行了讨论。 unsigned char基本上是一个字节。因此,如果您需要一个字节的数据,您可以使用它(例如,您可能希望使用它来设置打开和关闭标志以传递给函数,这通常在Windows API中完成)。
unsigned char只接受正值:0到255 引用弗罗姆"c编程laugage"一书:
限定符 |
最新内容
相关内容
linux命令替换的字符?
linux命令替换的字符?,命令,数据,系统,商业,字符串,文件,内容,方法,批量,字符,Linux批量替换多个文件中字符串Linux下批量替换多个文件中的字linux常用命令文本?
linux常用命令文本?,工作,命令,网络,地址,系统,管理,标准,信息,目录,文件,Linux用户以及权限相关常用命令总结sudo和su类似,有一些附加的属性,管linux命令行字符隐藏?
linux命令行字符隐藏?,系统,标准,信息,名称,代码,工具,文件夹,命令,文件,语言,linux下c语言隐藏命令窗口1、如果只是要隐藏标准输出,可以通过设linux转换字符集命令?
linux转换字符集命令?,系统,名称,时间,位置,服务,文件,字符集,命令,格式,以下,如何在Linux系统实现字符编码转换首先我们打开系统并使用root账linux字符动画命令?
linux字符动画命令?,工作,系统,地址,信息,命令,目录,工具,时间,标准,基础,Linux常用基本命令大全介绍linux常用命令: pwd命令 该命令的英文解释linux文本查询命令?
linux文本查询命令?,标准,命令,文件,工具,数据,信息,位置,系统,内容,文本,Linux下Grep命令的详细使用方法?1、查找root目录下包含Linux的文件,linux在线命令文本?
linux在线命令文本?,系统,工作,信息,在线,地址,命令,基础,标准,工具,目录,Linux常用命令linux系统常用操作命令如下:ls:全拼list,功能是列出目录字符串查找命令linux?
字符串查找命令linux?,系统,字符串,工具,信息,文件,命令,字符,选项,文本,范本,如何在Linux下查找文件内容包含某个特定字符串的文件在linux中glinux编写文本命令?
linux编写文本命令?,工作,系统,命令,第一,信息,发行,代码,名字,文件,终端,linux中编辑文件命令linux常用命令有pwd命令、cd命令、ls命令、catlinux压缩文本的命令?
linux压缩文本的命令?,系统,图片,命令,设备,工具,位置,软件,管理,文件,目录,如何在Linux上使用tar命令解压和压缩文件1、解压 tar.bz2/bzip 归linux压缩文本的命令?
linux压缩文本的命令?,系统,图片,命令,设备,工具,位置,软件,管理,文件,目录,如何在Linux上使用tar命令解压和压缩文件1、解压 tar.bz2/bzip 归linux命令替换字符串?
linux命令替换字符串?,字符串,文件,批量,首次,数据,命令,内容,方法,用字,结尾,linux下批量查询文件内容字符串并替换一)通过vi编辑器来替换。vi