博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础之short转换byte[]
阅读量:6829 次
发布时间:2019-06-26

本文共 1014 字,大约阅读时间需要 3 分钟。

最近做个通信项目使用UDP Socket,所以数据的接发都与byte[]有关,

基本类型与byte[]转换作为基础知识,需要mark一下. 0x0与0x00的区别是前者4位,后者8位.

ByteArrayOutputStream buf = new ByteArrayOutputStream();

DataOutputStream out = new DataOutputStream(buf);
out.writeShort(301);
byte[] b1 = buf.toByteArray();

for(byte bb : b1) {

System.out.print(Integer.toHexString(bb & 0xFF) + " ");
}
byte[] buf2 = {0x01,0x2d};
ByteArrayInputStream bintput = new ByteArrayInputStream(buf2);
DataInputStream dintput = new DataInputStream(bintput);
short i = dintput.readShort();
System.out.print(i);

//io的各种关闭省略..

 

如果把301定义成int,那么转换后byte[]的长度是4,内容是0x00 0x00 0x01 0x2d,因为int型占4byte32位,而short是2byte16位,同时注意取值范围.

 

public static int byte2ToUnsignedShort(byte[] bytes, int off) {

int high = bytes[off];
int low = bytes[off + 1];
return (high << 8 & 0xFF00) | (low & 0xFF);
}

public static byte[] unsignedShortToByte2(int s) {
byte[] targets = new byte[2];
targets[0] = (byte) (s >> 8 & 0xFF);
targets[1] = (byte) (s & 0xFF);
return targets;
}

转载于:https://www.cnblogs.com/oliword/p/7020014.html

你可能感兴趣的文章
Struts2 中action之间的跳转(分享)
查看>>
HDU4707:Pet(DFS)
查看>>
html标签页图标
查看>>
C# list 新用法
查看>>
Android 获取控件相对于屏幕位置
查看>>
DNGuard Enterprise v2.80 released
查看>>
WPP
查看>>
C# GetSchema Get List of Table 获取数据库中所有的表名以及表中的纪录条数的方法
查看>>
PySide教程:“.NET研究”第一个PySide应用
查看>>
winrar自解压释放路径详解
查看>>
图像开运算+闭运算+腐蚀+膨胀
查看>>
poj-1324 Holedox Moving **** [转]
查看>>
深入foreach工作方式
查看>>
UIView 进行各种动画展示及其用法解释
查看>>
公布2012年5月赛CSDN算法达人赛试题及参考答案
查看>>
Mysql ON子句和USING子句
查看>>
linux杂谈
查看>>
类型、值和变量
查看>>
UIImage+Scale
查看>>
Linux sed 替换第一次出现的字符串
查看>>