byte[] && 二进制 && 十进制 && 十六进制 - zLulus/My_Note GitHub Wiki
byte[] && 二进制
byte[]=byte的数组=8位二进制单元的数组=0-255的数字的数组
即
byte=8位二进制单元=2^8=256(0-255范围)=1字节
二进制 && 十进制
二进制->十进制:
二进制的每一位*2^(所在位-1),再求和
eg.
10010110
=1*2^7+0*2^6+0*2^5+1*2^4+0*2^3+1*2^2+1*2^1+0*2^0
=128+16+4+2
=150
十进制->二进制:
每一位=十进制数(或者它的余数)/2^(当前位数-1)的商
eg.
150/128=1——余数22
22/64=0——22
22/32=0——22
22/16=1——6
6/8=0——6
6/4=1——2
2/2=1——0
0/1=0——0
结果为10010110
十六进制 && 十进制与上述类似
十六进制
十六进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
二进制 | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
十进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
二进制 && 十六进制
二进制->十六进制:
首先把它分为每4位一组来转换为十六进制(如果位总数不是4的倍数,最左边的一组可以少于4位,前面用0补足)
然后将每个4位组转换为相应的十六进制数字
二进制 | 11(补足为0011) | 1100 | 1010 | 1101 | 1011 | 0011 |
十六进制 | 3 | C | A | D | B | 3 |
十六进制->二进制:
展开每个十六进制数字,将其转换成二进制格式
十六进制 | 1 | 7 | 3 | A | 4 | C |
二进制 | 0001 | 0111 | 0011 | 1010 | 0100 | 1100 |
示例代码
参考资料
How do you convert a byte array to a hexadecimal string, and vice versa?
hex to float conversion
How can I convert a hex string to a byte array? [duplicate]