`
378629846
  • 浏览: 215405 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

Int和byte数组之间的转换

    博客分类:
  • java
阅读更多

有时候和C的程序通信的时候,我们在封装协议时,可能需要将Java里的int值,转换成byte[]后用socket发送。所以我们需要将32位的int值放到4字节的byte[]里。

/**
 * int值转成4字节的byte数组
 * @param num
 * @return
 */
public static byte[] int2byteArray(int num) {
	byte[] result = new byte[4];
	result[0] = (byte)(num >>> 24);//取最高8位放到0下标
	result[1] = (byte)(num >>> 16);//取次高8为放到1下标
	result[2] = (byte)(num >>> 8); //取次低8位放到2下标 
	result[3] = (byte)(num );      //取最低8位放到3下标
	return result;
}

 反过来,将4字节的byte[]转成int值:

/**
 * 将4字节的byte数组转成int值
 * @param b
 * @return
 */
public static int byteArray2int(byte[] b){
	byte[] a = new byte[4];
	int i = a.length - 1,j = b.length - 1;
	for (; i >= 0 ; i--,j--) {//从b的尾部(即int值的低位)开始copy数据
		if(j >= 0)
			a[i] = b[j];
		else
			a[i] = 0;//如果b.length不足4,则将高位补0
	}
	int v0 = (a[0] & 0xff) << 24;//&0xff将byte值无差异转成int,避免Java自动类型提升后,会保留高位的符号位
	int v1 = (a[1] & 0xff) << 16;
	int v2 = (a[2] & 0xff) << 8;
	int v3 = (a[3] & 0xff) ;
	return v0 + v1 + v2 + v3;
}

 

 

2
3
分享到:
评论
1 楼 LvQing 2012-08-28  
byte 数组长度分为大于等于4或等于2 的情况.
public static int byte2int(byte b[]) {
		if (b != null && b.length > 0) {
			if (b.length >= 4) {
				return b[3] & 0xff | (b[2] & 0xff) << 8 | (b[1] & 0xff) << 16
						| (b[0] & 0xff) << 24;
			} else if (b.length == 2) {
				return byte2int2(b);
			} else {
				return 0;
			}

		} else {
			return 0;
		}

	}
public static int byte2int2(byte b[]) {
		return b[1] & 0xff | (b[0] & 0xff) << 8;
	}
	

相关推荐

    byte数组转换工具类 byte数组转int,byte数组转short,short转byte数组

    byte数组操作的工具类,支持byte数组转int,int转byte数组,byte数组转short,short转byte数组。。。 下载的人多了,csdn会自动涨分,现在可以手动调了,我给降到最低了

    int类型和byte数组之间的转换

    写一个方法,将int类型转换为字节数组,输入任意int类型整型,输出字节数组;写第二个方法,输入字节数组,输出对应int类型数据。

    java基本类型与byte数组互相转换.pdf

    Java 基本类型与 byte 数组互相转换 Java 中的基本类型与 byte 数组之间的转换是非常重要的,以下是关于 Java 基本...Java 基本类型与 byte 数组之间的转换需要使用位操作符和与操作符将高位和低位截断成 byte 类型。

    C#byte数组结构体互相转换示例.zip

    总结起来,这个"C#byte数组结构体互相转换示例"提供了C#中结构体与字节数组之间转换的实用方法,解决了开发过程中常见的序列化和反序列化需求,提高了代码效率。开发者可以根据自己的项目需求,直接引用或借鉴这些...

    java基本类型与byte数组互相转换.doc

    由于Java基本类型和byte数组都是基本的数据结构,因此在Java编程中经常需要将基本类型转换为byte数组,或者将byte数组转换为基本类型。 在上面的代码中,我们可以看到将Java基本类型转换为byte数组的多个方法,每个...

    String(含Hex)与Byte数组互相转换[代码]

    首先,我们来看如何在字符串和字节数组之间进行转换。字符串通常用于表示文本信息,而字节数组则常用来存储二进制数据。在Java中,我们可以使用以下方法: 1. 字符串转字节数组: 使用`getBytes()`方法,它会根据...

    Java数值类型与byte数组相互转换

    Java bytes数组与基本类型的相互转换 Int -&gt; Bytes int64ToByte8 int48ToByte6 int40ToByte5 int32ToByte4 int24ToByte3 int16ToByte2 int8ToByte Bytes -&gt; Int bytesToInt64 bytesToInt48 bytesToInt40 bytesTo...

    Java byte数组与其他类型转换

    总的来说,Java中byte数组与其他基本类型之间的转换是通过位移和按位操作来完成的,这允许程序员在处理二进制数据时灵活地进行字节序列的解析和构造。了解并熟练掌握这些转换方法,对于处理涉及二进制数据的Java程序...

    C#中将byte数组转换为8bit灰度图像

    在C#编程语言中,将byte数组转换为8bit灰度图像是一项常见且重要的技能,尤其是在处理图像数据或开发图像处理应用时。本文将详细解析这一过程,包括关键概念、技术细节以及具体实现步骤。 ### 关键概念 1. **8bit...

    java中两个byte数组实现合并的示例

    这个简单的函数`addBytes`接收两个`byte`类型的数组`data1`和`data2`作为参数,并返回一个新的`byte`数组,该数组是`data1`和`data2`的拼接结果。这是通过创建一个新的足够大的字节数组`data3`来实现的,其长度等于`...

    java基本类型与byte数组互相转换文.pdf

    使用 Float 的 floatToIntBits() 方法可以将 float 类型转换成 int 类型,然后使用 bitwise right shift 运算符 (&gt;&gt;) 和 bitwise AND 运算符 (&) 可以将 int 类型转换成 byte 数组。例如: ```java public static ...

    C#_string_byte数组转换解析

    这里提供了一个将字节数组转换为16进制字符串的辅助函数: ```csharp public static string ToHexString(byte[] bytes) { string hexString = string.Empty; if (bytes != null) { StringBuilder strB = new ...

    Java将图片转换为byte数组例子总结

    #### 三、将byte数组转换回图片的方法 **方法名称**:`bytesToImage` **参数**: - `byte[] bytes`:表示包含图像数据的字节数组。 **返回值**:`Image` 表示转换后的图像对象。 **实现逻辑**: 1. **创建图像**...

    java byte相互转换详解左右位移

    在从byte数组转换回int时,我们使用左移操作和按位或操作(OR)。例如,`int i=0; i+=((b[0]&0xff));` 这里首先将byte转为int并保留其字节值,然后左移24位,将字节放到int的最高位字节处。对于后续的每个字节,都...

    C# Byte数组转Int32 Short Float(浮点数)

    标题和描述提到的“C# Byte数组转Int32 Short Float(浮点数)”是指将字节数组中的数据转换为整型(Int32)、短整型(Short)以及浮点数(Float)的过程。以下是对这个主题的详细解释: **字节数组基础** 字节数组...

    java基本类型与byte数组互相转换

    Byte数组转换为Short值 最后,`byte`数组也可以转换回相应的基本类型。例如,将2字节的`byte`数组转换为`short`值: ```java public static short byteArrToShort(byte[] b) { byte[] a = new byte[2]; int i =...

    java数据类型转byte数组

    ip地址转4字节byte,char转2字节byte,byte数组转char,int整数转换为4字节的byte数组,byte数组转换为int整数,double类型转8字节数组,8位数组转double,long整数转换为8字节的byte数组,short整数转换为2字节的...

    java整数与byte数组的转换实现代码

    例如,intToByte4方法可以将int类型的整数转换为4字节的byte数组,而longToByte8方法可以将long类型的整数转换为8字节的byte数组。 二、整数与byte数组的转换原理 整数与byte数组的转换原理是通过位操作符来实现的...

    转换Image数据为byte数组

    与之相对,将字节数组转换回`Image`对象的过程则较为直接: 1. **创建图像对象**:使用`Toolkit.getDefaultToolkit().createImage()`方法,直接将字节数组作为参数传递,即可创建出相应的`Image`对象。 2. **预...

    byte数组转uint

    public static uint ByteToInt(byte[] b) { uint u = 0; int startIndex = 0; if (b.Length == 8) u = (uint)(b[startIndex + 0] | b[startIndex + 1] | b[startIndex + 2] | b[startIndex + 3] | b[startIndex...

Global site tag (gtag.js) - Google Analytics