日期:2014-05-20  浏览次数:20914 次

UDP byte[] 发送十六进制数据时出现的问题
Java中byte只能保存 -128 到 127之间的数,我的十六进制字串如:5A 4A 01 00 08 AA 78 20 20 CC 33 C3 3C 00
用byte发送的时候 超过127的就会转换成负数。
有解决办法吗

------解决方案--------------------
你试过直接发了吗 应该是没有关系的
------解决方案--------------------
应该没关系的,你的数据应该是一个byte数组,接收端按照通信协议解析数据就好了
如果你是想把一个大于127的byte转成一个short或int范围的正数表示,可以自己做下转换

Java code
byte b = (byte)225;
System.out.println(b);
int i = 0x00ff & b;
System.out.println(i);

------解决方案--------------------
public void cleanBuf(byte[] bits, int len){
for(int i = 0; i < len; i++){
bits[i] = 0;
}
}
public String byteToString_Hex(byte[] bit, String str, int len){
for(int i = 0; i < len; i++){
str += (Integer.toHexString((bit[i] & 0xF0) >> 4) + Integer.toHexString((bit[i] & 0x0F) >> 0));
}
return str.toUpperCase();
}
个人认为只是方便协议制定,人的阅读而已, 其实内部都是int类型