nt和byte数组之间的转换
来源:互联网 发布:linux mv 覆盖 不提示 编辑:程序博客网 时间:2024/06/05 05:07
有时候和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 0
- nt和byte数组之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int 之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int之间的转换
- byte[]数组和int之间的转换
- Java中字符和byte数组之间的相互转换
- java整数和byte数组之间的转换
- java整数和byte数组之间的转换
- android 开源项目集合
- 遍历指定目录获得文件名或者文件夹名称,或者两则都要
- ngwork 工具及使用
- Hive2.1:Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException:
- 指针和const
- nt和byte数组之间的转换
- 利用gd库给图片打图片水印
- 垃圾收集器与内存分配策略
- iOS--应用添加中文语言支持
- 文件上传(纯jsp编写,无框架)
- ctf IDF实验室一种编码而已
- 使用集合操作符
- 一个JAVA的XSD解析问题的解决
- 门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结