0x01和0x1有何不同

Last updated on 9 months ago

有区别?

还真有,今天在给bytes1类型变量赋值的时候0x1一直报错,但是我上面的0x12却没有报错,最后我把0x1换成0x01就好了。那么,这两者有什么不同呢?

十六进制如何存储到二进制位上

在十六进制中,一个位上能表示的最大值是F,也就是15,最小值则是0,而0-15则刚好可以用4个二进制位表示

所以十六进制的每一个位都能用一个四位的二进制表示

比如0x1就是二进制00010x1F就是二进制0001 1111,而0x01表示的自然就是0000 0001

总结

那么回归问题,虽然0x010x1表示的值是相同的,但是他们在二进制位上并不相同,而我用的变量刚好是bytes1类型,长度是一个字节,也就是8个二进制位,当我赋值0x1的时候,长度对不上也就报错了,提示也是“类型不能进行隐式转换”