byte[]数组和int 之间的转换

红太狼 2022-08-10 11:00 241阅读 0赞

&: 按位与,当两位同时为1时才返回1。 1011 1010 & 1111 1111 = 1011 1010,还是得到是原值(类似位置对应)。

|:按位或,只要有一位为1即可返回1。1011 1010 0000 0000 | 1011 0101 = 1011 1010 1011 0101(字节拼接)

:右移运算符,<<:左移运算符,移出去的被截断,空出来的位以符号位进行填充。左移n位相当于乘以2的n次方,右移n位相当于除以2的n次方。

  1. package demos;
  2. /**
  3. * Created by jiaobuchong on 2015/11/21.
  4. */
  5. public class BytesToInt {
  6. /**
  7. * 低位在前, 高位在后, 将整型数字的每个字节保存到数组中
  8. *
  9. * @param value
  10. * @return
  11. */
  12. public static byte[] intToBytes(int value) {
  13. byte[] des = new byte[4];
  14. des[0] = (byte) (value & 0xff); // 低位(右边)的8个bit位
  15. des[1] = (byte) ((value >> 8) & 0xff); //第二个8 bit位
  16. des[2] = (byte) ((value >> 16) & 0xff); //第三个 8 bit位
  17. /**
  18. * (byte)((value >> 24) & 0xFF);
  19. * value向右移动24位, 然后和0xFF也就是(11111111)进行与运算
  20. * 在内存中生成一个与 value 同类型的值
  21. * 然后把这个值强制转换成byte类型, 再赋值给一个byte类型的变量 des[3]
  22. */
  23. des[3] = (byte) ((value >> 24) & 0xff); //第4个 8 bit位
  24. return des;
  25. }
  26. /**
  27. * 将上面转成的byte数组转换成int原始值
  28. * @param des
  29. * @param offset
  30. * @return
  31. */
  32. public static int bytesToInt(byte[] des, int offset) {
  33. int value;
  34. value = (int) (des[offset] & 0xff
  35. | ((des[offset + 1] & 0xff) << 8)
  36. | ((des[offset + 2] & 0xff) << 16)
  37. | (des[offset + 3] & 0xff) << 24);
  38. return value;
  39. }
  40. public static void main(String[] args) {
  41. byte[] res = intToBytes(30);
  42. System.out.println(bytesToInt(res, 0)); //30
  43. }
  44. }

望同行多多指教。

参考博客: http://blog.csdn.net/sunnyfans/article/details/8286906

发表评论

表情:
评论列表 (有 0 条评论,241人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Android中byte转换

    在与服务器的交互过程中,所有的数据都可以看成一段二进制流,那如何把这些二进制流转换成我们需要的数据呢,此文将介绍byte数组转数值的几种方式 1、byte\[\]转换成Lon