为什么 arr[0]=(byte)((int)(id>>0*8)&0xff); 中先(int)后(byte) java中不超过int的取值范围的数据类型,都会提升为int的,直接arr[0]=(byte)(id>>0*8&0xff) 不可以吗?
2016-10-30
已采纳回答 / XhstormR
0xff是十六进制FF的表示方法,因为一个十六进制数字转换成二进制是四位,即F=1111,所以0xff占用一个字节 。也就是说是1B,1KB是1024B。&位运算。
2016-10-22
已采纳回答 / leowei
个人理解,字符串先转换成 字符数组! java平台是unicode编码0-65535之间, 但是计算机或者浏览器的编码有好多种, 根据你想转换的码表,再生成一个int 数。(一个字符在不同的平台,数值有时是不相同的 ) ,java 虚拟机和你想转换的码表之间 有个转换的关系,String.getBytes(),是用平台默认码表进行转换的。这个过程 。包括了1 先将字符串 转换成 字符数组(其实字符串本质是字符数组),2 利用默认平台的码表,进行编码 变成 int 数 3 用int 数转换成 字节数组,
2016-10-21