Int和byte数组之间的转换

标签: int byte 数组 | 发表时间:2012-08-27 20:25 | 作者:
出处:http://www.iteye.com

有时候和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;
}

 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [int byte 数组] 推荐:

Int和byte数组之间的转换

- - ITeye博客
有时候和C的程序通信的时候,我们在封装协议时,可能需要将Java里的int值,转换成byte[]后用socket发送. 所以我们需要将32位的int值放到4字节的byte[]里. /** * int值转成4字节的byte数组 * @param num * @return */ public static byte[] int2byteArray(int num) {.

一个隐形的java int溢出

- hikerlive - ITeye论坛最新精华讨论帖
     笔者最近在做一个类SNS的项目,其中使用了MongoDB进行Feed信息存储,并使用定时器删除过期信息.      定时器的时间变量为60天,设定.      在项目上线的某天,突然发现,2周前的数据丢失了,遍历了程序,没发现逻辑问题,甚至开始当心MongoDB造成的数据丢失(业内也是发生过的).

android 随手记 --byte String inputstream 之间的转换

- - CSDN博客推荐文章
     * 将InputStream转换成String .      * 将InputStream转换成某种字符编码的String .      * 将String转换成InputStream .      * 将InputStream转换成byte数组 .      * 将byte数组转换成InputStream .

js 数组Array用法

- - CSDN博客推荐文章
slice 方法返回一个 Array 对象,其中包含了 arrayObj 的指定部分. slice 方法一直复制到 end 所指定的元素,但是不包括该元素. 如果 start 为负,将它作为 length + start处理,此处 length 为数组的长度. 如果 end 为负,就将它作为 length + end 处理,此处 length 为数组的长度.

JavaScript中Array(数组)的属性和方法 .

- - BlogJava-首页技术区
Array只有一个属性,就是length,length表示的是数组所占内存空间的数目,而不仅仅是数组中元素的个数,在刚才定义的数组中,b.length的值为8. 数组的length属性是可写的,这是一个非常有意思的属性,我们可以通过这种方法来截取数组. //显示的结果是3,说明即使删除也无法改变数组的长度.

车牌识别--模板库C语言数组的制作

- - CSDN博客移动开发推荐文章
在车牌识别中,字符模板匹配的模板库是很大的. 包括 10个阿拉伯数字以及26个英文字母还有几十个汉字,每个库都是一张小图片,加载起来也比较繁琐. 后面还有可能为提高识别增加额外的模板库. 之前的处理中,是把这些库的图片文件放到一个文件夹中,程序启动后,再一个一个读取,这样文件的数量就比较多. 程序稳定后,我们就不要这些字符模板库了,可以用数组的形式代替,就是把这些文件数据保存一个c语言数组里面,直接编译到程序中,运行程序的时候直接使用,不用一个一个加载,再去匹配.

JavaScript中常见的数组操作函数及用法 - front-Thinking

- - 博客园_首页
JavaScript中常见的数组操作函数及用法.   昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法. 今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下,这样方便大家准备参考. 如果恰好你也在准备各种笔试,希望对你有所帮助.   创建数组应该是最简单的了,有用数组字面量创建和数组构造函数两种方法,见下:.

Pelican Imaging 的原型数组相机可以让手机更轻薄

- mzhair - Engadget 中国版
简单来说,传统的手机相机如果是人类的眼睛的话,那 Pelican Imaging 的「数组相机」就是昆虫的复眼 -- 用很多小颗的相机合并的效果,来模拟一颗大颗的相机镜头的效果. 这么做最主要的优势,就是可以把手机做得更轻薄,但同时又可以提供更多使用上的便利. 其中一个例子,就是 Adobe 之前提过的全光镜效果,让手机不仅可以简单的拍出对焦正确的相片,甚至可能也有机会拍出「钱景深」来;另一个是主站不晓得从哪挖出来的影片,展示一种可以隔着树,甚至隔着柱子追踪物体的技术.

如何高效地判断数组中是否包含某特定值

- - ImportNew
如何检查一个未排序的数组中是否包含某个特定值,这是一个在Java中非常实用并且频繁使用的操作. 另外,这也是Stack Overflow上面非常受关注的问题. 在得票数最多的答案中,可以看到,检查数组中是否包含特定值可以用多种不同的方式实现,但是时间复杂度差别很大. 下面,我将为大家展示各种方法及其需要花费的时间.

提高你的Java代码质量吧:警惕数组的浅拷贝

- - CSDN博客编程语言推荐文章
在日常工作中,我们会遇见很多数组的拷贝和复制的问题,但是在你使用系统提供的API进行编码的时候,无形中会留下浅拷贝的隐患. 有这样一个例子,第一个箱子里面与赤橙黄绿青蓝紫7色气球,现在希望第二个箱子也放入7个气球,其中最后一个气球改为蓝色,也就是赤橙黄绿青蓝蓝七个气球. //第二个箱子的小球是拷贝的第一个箱子里的.