0x01和0x1有何不同
Last updated on 9 months ago
有区别?
还真有,今天在给bytes1类型变量赋值的时候0x1
一直报错,但是我上面的0x12
却没有报错,最后我把0x1
换成0x01
就好了。那么,这两者有什么不同呢?
十六进制如何存储到二进制位上
在十六进制中,一个位上能表示的最大值是F,也就是15,最小值则是0,而0-15则刚好可以用4个二进制位表示
所以十六进制的每一个位都能用一个四位的二进制表示。
比如0x1
就是二进制0001
,0x1F
就是二进制0001 1111
,而0x01
表示的自然就是0000 0001
了
总结
那么回归问题,虽然0x01
和0x1
表示的值是相同的,但是他们在二进制位上并不相同,而我用的变量刚好是bytes1类型,长度是一个字节,也就是8个二进制位,当我赋值0x1
的时候,长度对不上也就报错了,提示也是“类型不能进行隐式转换”