为了账号安全,请及时绑定邮箱和手机立即绑定

看不懂呢。。实际开发中真的会用到这个吗?

如果需要转二进制的话,先转成String再用String的getBytes方法不就好了。。

正在回答

3 回答

实际开发中用到的不多,但是要处理乱码的时候要用到,还有就是想成为高手,必须懂。

int转换成2进制字节型数组说白了就是将一个整数变成2进制表示,从右到左按照每八位划分开一个字节,共四个字节,也就是一个索引位4的数组。例如:00000000 00000000 00000011 00110011表示成十进制就是819,这里我解释一下,int在java中是4字节存储,4个字节恰好是32(4*8=32)位、每个字节是8位,字节是计算机中存储的一个单位,用8位2进制数表示。

将一个整数转化成2进制字符串可以用 String binaryStr = Integer.toBinaryString(8143);

整数转换成2进制字节数组:例如:00000000 00000000 00000011 00110011表示成十进制就是819

需要把00110011单独作为一个字节 就是51  具体算法是:51=0*2^7+0*2^6+1*2^5+1*2^4+0*2^3+0*2^2+1*2^1+1*2^0

以此类推:

00000011 单独作为一个字节 就是3  

00000000单独作为一个字节 就是0

00000000单独作为一个字节 就是0

所以819变成字节数组是[51,3,0,0]

老师算法解释:arr[0] =(byte)((int)(id >> 0*8 & 0xff));

首先id右移n*8位(n表示第几个字节),然后再&0xff,作用是让高位为零,只保留最后八个字节,然后将字节强制类型转换为int型,最后在强制类型转换为byte型,byte字节,占用8个存储位,oxff 十六进制数,代表1111 1111。

操作过程:819 =00000000 00000000 00000011 00110011

首先:右移0*8位 结果为不变,还是00000000 00000000 00000011 00110011

然后:00000000 00000000 00000011 00110011&0xff = 00000000 00000000 00000000 00110011

最后:00000000 00000000 00000011 00110011转换为int为51

在后:51转换为byte为51

这里只展示了第一个,其他以此类推。只能这样解释了吧!!!

3 回复 有任何疑惑可以回复我~
#1

长安1994 提问者

非常感谢!
2016-12-29 回复 有任何疑惑可以回复我~

&0xff是什么意思.

0 回复 有任何疑惑可以回复我~
#1

Airly

0x代表十六进制 0xff转化为二进制就是1111 1111
2016-08-30 回复 有任何疑惑可以回复我~

我也不懂  占个地  哪位大神讲解一下

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
二进制基础
  • 参与学习       99871    人
  • 解答问题       210    个

二进制是计算机唯一能识别的语言,是学习计算机技术必备的知识

进入课程

看不懂呢。。实际开发中真的会用到这个吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信