一起Talk Android吧(第五百一十三回:Java中的byte数组与int变量相互转换)
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第五百一十三回:Java中的byte数组与int变量相互转换)相关的知识,希望对你有一定的参考价值。
文章目录
各位看官们大家好,上一回中咱们说的例子是"自定义Dialog",这一回中咱们说的例子是" Java中的byte数组与int变量相互转换"。闲话休提,言归正转, 让我们一起Talk android吧!
在实际项目中与BLE设备通信时需要使用byte数组,而程序中使用数据是int类型。因此需要在它们之间相互数据类型转换。我们将编写一个转换工具类,方便在项目中
使用。本章回中将介绍转换类的实现方法。
整体思路
在java中byte类型占用8bit,而int类型占用32bit,因此需要4个byte连接在一起才能存储一个int类型的变量。我们通常使用长度为4的byte数组来存放数据。也可以使用一个byte存储int类型的变量,只是它的存储范围在-128-127之间,不在这个范围的数字会产生精度丢失进而导致数据不准确。
在转换过程中还有一个细节需要处理:字节的高低位顺序,大部分机器的数据存储是高位在前,低位在后,有些机器的数据存储正好与此相反。因此在转换过程中也需要考虑这点。
示例代码
下面是示例程序,请大家参考:
/**
* Desc:int变量转换成byte数组,前提是int是32位,占用4个byte,这里的Big表示转换后高位在前,低位在后
*/
public static byte[] intToByteArrayBig(int value)
byte[] result = new byte[4];
result[0] = (byte) ((value >> 24) & 0XFF);
result[1] = (byte) ((value >> 16) & 0XFF);
result[2] = (byte) ((value >> 8) & 0XFF);
result[3] = (byte) ((value) & 0XFF);
return result;
/**
* Desc:int变量转换成byte数组,前提是int是32位,占用4个byte, 这里的Small表示转换后低位在前,高位在后
*/
public static byte[] intToByteArraySmall(int value)
byte[] result = new byte[4];
result[3] = (byte) ((value >> 24) & 0XFF);
result[2] = (byte) ((value >> 16) & 0XFF);
result[1] = (byte) ((value >> 8) & 0XFF);
result[0] = (byte) ((value) & 0XFF);
return result;
/**
* Desc:int变量转换成byte数组,前提是int是32位,占用4个byte, 这里的Big表示转换后高位在前,低位在后
*/
public static int byteArrayToIntBig(byte array[])
if (array == null || array.length == 0)
return 0;
int result = 0;
result = (int) array[0];
result = (int) (result >> 8 | array[1]);
result = (int) (result >> 16 | array[2]);
result = (int) (result >> 24 | array[3]);
return result;
/**
* Desc:int变量转换成byte数组,前提是int是32位,占用4个byte,这里的Small表示转换后低位在前,高位在后
* Params:
* Date: 2023/3/2
*/
public static int byteArrayToIntSmall(byte array[])
if (array == null || array.length == 0)
return 0;
int result = 0;
result = (int) array[3];
result = (int) (result >> 8 | array[2]);
result = (int) (result >> 16 | array[1]);
result = (int) (result >> 24 | array[0]);
return result;
我建议把上面的程序写到一个类中,以后需要使用时直接使用类中的方法就可以。
看官们,关于"Java中的byte数组与int变量相互转换"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
以上是关于一起Talk Android吧(第五百一十三回:Java中的byte数组与int变量相互转换)的主要内容,如果未能解决你的问题,请参考以下文章
一起Talk Android吧(第四百一十三回:使用三角函数绘制正弦波)
一起Talk Android吧(第五百一十九回:波浪上升动画)
一起Talk Android吧(第五百一十七回:绘制波浪效果)
一起Talk Android吧(第五百一十一回:自定义Dialog主题)