前提
公司有个项目使用到第三方厂商的硬件sdk,其中硬件的设置中有个配置项的单位是字节长度,一开始以为是字符串长度,后来发现不对,仔细排查才发现是字节长度。
知识点
- 字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。
- 字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。
- 不同编码里,字符和字节的对应关系不同:
ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。
UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。
Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。
符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。
UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。
UTF-32编码中,世界上任何字符的存储都需要4个字节。
一个16进制的数占多少字节?
由上图可以看出:一个字节由8位二进制数表示,所以一个16进制数占半个字节。