前言:最近项目刚进入开发阶段就给了我一重锤,一个接口,解剖了一下业务需求,字节转字符把我难住了。
(需求提示:730字节(16进制)=365字符)先整理下基础知识
字节,字符,位,字简述
- b是bit的缩写,b就是bit,也就是 比特位 / 位(bit),是计算机表示数据最小的单位,每一位的状态只能是0或1。
- B是Byte的缩写,B就是Byte,也就是字节(Byte),1字节等于8位
- 8bit(比特位)= 1Byte(字节)
- 1024Byte(字节)= 1K(千字节)
- 1024K(千字节)= 1M(兆字节)
- 1024M = 1G
- 1024G = 1T
- 1个字符=2字节
- 1 字母 = 1 B= 8 b
- 1 汉字 = 2 B = 16 b
- 字符: 人们使用的记号,抽象意义上的一个符 号。 '1', '中', 'a', '$', '¥', ……
- 字节: 计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间。 0x01, 0x45, 0xFA, ……
- 字符串 : 在内存中,如果“字符”是以 ANSI 编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为 ANSI 字符串或者多字节字符串。
- 字 : 字就是由一些字符组成的,是据算计处理数据时一次存取,加工和传送的数据长度。
字由若干字节构成,字的位数叫字长,一台8位机子:一个字等于1个字节,字长为8位,如果是16位的机子。一个字等于2个字节,字长为16,字是计算机处理数据和运算的单位。
由此可见,计算机的字长决定了其CPU一次操作处理实际位数的多少,即:计算机的字长越大,其性能越好。
Java 8大基本类型所占字节数(或 bit 数)
类型 | 存储需求 | bit 数 | 取值范围 | 备注 |
---|---|---|---|---|
byte | 1字节 | 8 | -128~127 | 即 (-2)的7次方 ~ (2的7次方) - 1 |
short | 2字节 | 16 | -32768~32767 | 即 (-2)的15次方 ~ (2的15次方) - 1 |
int | 4字节 | 32 | -2147483648~2147483647 | 即 (-2)的31次方 ~ (2的31次方) - 1 |
long | 8字节 | 64 | 即 (-2)的63次方 ~ (2的63次方) - 1 | |
boolean | 1字节 | 8 | true、false | |
char | 2字节 | 16 | Java中,只要是字符,不管是数字还是英文还是汉字,都占两个字节。 | |
float | 4字节 | 32 | float 类型的数值有一个后缀 F(例如:3.14F) | |
double | 6字节 | 64 | 没有后缀 F 的浮点数值(例如:3.14)默认为 double |
进制转换