Java中用字节数组表示整数和用整数表示字节数组
2016-12-11 22:15
309 查看
程序中的所有数在计算机内存中都是以二进制的形式储存的。所以有时候我们还是有必要学习一下位运算的。我们知道在java中一个整型是占用四个字节32位的,而一
个byte类型占用一个字节8位的。所以我们可以用一个整型来最多表示一个长度为4的byte数组,同样我们可以用一个长度为4的byte数组来表示一个整型。下面我们就
看一下怎么用代码怎么去写整型和byte数组的相互转换。
测试的输出结果和我们放入的整型值一模一样。
输出结果和我们要转换的字节数组一样。
个byte类型占用一个字节8位的。所以我们可以用一个整型来最多表示一个长度为4的byte数组,同样我们可以用一个长度为4的byte数组来表示一个整型。下面我们就
看一下怎么用代码怎么去写整型和byte数组的相互转换。
字节数组表示一个整型
/** * 用一个长度为4的数组表示一个整数 * 因为java中一个int类型占4个字节即八位,而一个byte类型占1个字节 * 所以如果用byte表示一个整数的话,需要一个长度为4的byte数组。 * 注意这里要用无符号右移 * @param bytes * @param temp */ public void putInt(byte[] bytes, int temp) { bytes[0] = (byte)(temp >>> 24) ;//bytes[0]表示一个int值的最高8位 bytes[1] = (byte)(temp >>> 16);//bytes[1]表示一个int值的接下来的8位 bytes[2] = (byte)(temp >>> 8);//bytes[2]表示一个int值的再接下来的8位 bytes[3] = (byte)(temp); //bytes[3]表示一个int值的最低8位 } /** * 把一个长度为4的byte数组还原为整数 * 注意这里一定要明确的区分开来一个int值的四个字节。 * 每个字节之间一定要用括号()括起来 * @param bytes * @return */ public int getInt(byte[] bytes) { return (bytes[0] << 24) | //还原int值最高8位 ((bytes[1] & 0xff) << 16) | //还原int值接下来的8位 ((bytes[2] & 0xff) << 8 ) |//还原int值再接下来的8位 (bytes[3] & 0xff); //还原int值的最低8位 }接下来我们测试一下看看:
@Test public void byteTransformationInt(){ int temp = 579; byte[] bytes = new byte[4]; putInt(bytes,temp);//用一个长度为4的数组表示一个整型 System.out.println(getInt(bytes));//从长度为4的数组中还原放入的整型 }
测试的输出结果和我们放入的整型值一模一样。
用整型表示一个长度为4的byte数组
/** * 这里可以根据自己的需要改变byte数组的长度, * 这里我用的是一个长度为4的字节数组 * @return */ public int putBytes(byte[] bytes){ return (bytes[0] & 0xff) | ((bytes[1] & 0xff) << 8) | ((bytes[2] & 0xff) << 16) | ((bytes[3] & 0xff) << 24); } /** * 从整型转换字节数组 * @param a * @return */ public byte[] getBytes(int a){ byte[] bytes = new byte[4]; bytes[0] = (byte)(a); bytes[1] = (byte)(a >>> 8); bytes[2] = (byte)(a >>> 16); bytes[3] = (byte)(a >>> 24); return bytes; }接下来我们来测试一下:
@Test public void testIntToBytes(){ byte[] bytes = new byte[]{14,78,12,-12}; int tmp = putBytes(bytes); byte[] bytes1 = getBytes(tmp); System.out.println(Arrays.toString(bytes1)); }我们看看测试结果:
输出结果和我们要转换的字节数组一样。
相关文章推荐
- 主题:Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- java 如何将字节数组转换成16进制字符串表示
- Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- Java 字节数组与十六进制表示的字符串,互相转换
- Java整数占几个字节,以及负数的二进制表示方法,以及Java的逻辑运算符>>和>>>的区别
- java下整数转成字节数组
- Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- 整数和字节数组之间的转换算法
- java二进制,字节数组,字符,十六进制,BCD编码转换
- 将一个字节数组从任意字节offset开始,长为len的字节转换为整数
- java二进制,字节数组,字符,十六进制,BCD编码转换
- Java基础小知识——基本数据类型和字符串以及字节数组的转换
- Java算法总结:输入一个整数,求该整数的二进制表示中有多少个1
- java二进制,字节数组,字符,十六进制,BCD编码转换 ,GPS,GIS
- randnumber_mn.c 生成一个数组,包括k个不重复的整数,并且要求这些整数范围为[m,n),生成的结果中不能包含inum中的数字,size表示inum的长度
- Java 中没有无符号数,在读字节数组转换的时候需要注意溢出的情况
- java二进制,字节数组,字符,十六进制,BCD编码转换 ,GPS,GIS
- C#、Java有关16进制字符串和字节数组之间的转换
- java二进制,字节数组,字符,十六进制,BCD编码转换
- JAVA进行类型转换与字节数组与JAVA类型转换