java 字节 & 0xFF 什么意思, <=0xF又是什么意思
问题一:上边是一段将字节转化成16进制字符串的代码,将密码通过MD5转化字节,字节转化成16进制字符串,为什么得到自己还不够,要转化成16进制字符串。16进制字符串用什么...
问题一:上边是一段将字节转化成16进制字符串的代码,将密码通过MD5转化字节,字节转化成16进制字符串,为什么得到自己还不够,要转化成16进制字符串。16进制字符串用什么特别的作用?
问题二:我在网上搜到的位运算符为什么都是0和1的例子,得到的也是1和0的结果?我自己2010 & 1010得到的结果会是978
问题三:0x我知道是16进制的意思,那0xFF,0xF,0xFFFFFFFF是什么意思 展开
问题二:我在网上搜到的位运算符为什么都是0和1的例子,得到的也是1和0的结果?我自己2010 & 1010得到的结果会是978
问题三:0x我知道是16进制的意思,那0xFF,0xF,0xFFFFFFFF是什么意思 展开
2个回答
展开全部
问题1:16进制字符串的作用主要是便于查看,每个字节必然是两位字符。 如果不转换的话,字付中很多都是不可见字符,可能导致显示错乱,甚至被系统错误的解码。
问题2: 网上的写法是2进制的。 这样可以一眼看出对应的位的变化。而你的2010是10进制的。你需要手工转成2进制才能很好的确认值。
问题3:0xff换成2进制就是8个1,这样与的话,其实就是取到了字符的低8位。 oxf就是15, 小于15的数会转换成一个16进制数,你的代码里希望是固定的两个16进制数,所以当只会产生一个时要加个0
问题2: 网上的写法是2进制的。 这样可以一眼看出对应的位的变化。而你的2010是10进制的。你需要手工转成2进制才能很好的确认值。
问题3:0xff换成2进制就是8个1,这样与的话,其实就是取到了字符的低8位。 oxf就是15, 小于15的数会转换成一个16进制数,你的代码里希望是固定的两个16进制数,所以当只会产生一个时要加个0
更多追问追答
追问
问题一:为什么string.getByte()得到的是[100, 115, 97, 100, 97, 115, 102, 115],不是说byte是8位的二进制数据吗,数组中怎么不是二进制数据呢?
问题二:数组中的字节 & 0xFF是怎样进行计算的,我在网上看了很多资料都没看懂,
可以简单明了的讲一下吗?
追答
问题一:
byte存的是一个8字节的二进制数,但是数据库里没法存(比较麻烦),文件里也不太好放,和别人通讯时,byte数组也很麻烦。所以一般是转成字符保存。
例如 [100, 115, 97] 如果存成字符, “10011597” 这么就会有一个分割的问题,究竟是三位一分割还是两位一分割。 由于byte的取值范围 0-254 ,所以需要保存三位,这样就是"100115097",如果用16进制就是"647361",这样就比较短了。所以外面比较喜欢把byte存成16进制字符。
问题二:
& 表示按位与,与操作是个逻辑运算, 就是都为1时返回1,有一个是0就返回0
例如100 & 0xff 那么需要前后都转成2进制 100==> 01100100 0xff==>11111111,每一位做一下与运算,这样就发现,返回的结果就是100的低8位, 01100100.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询