java 是不支持无符号整型
在jdk1.5 中 int i=07010101; 这样写编译器并没有抱错
但int i=08010101; 这样就抱错有没有人可以给解释一下还有在java中怎么可以把08010101 这样的无符号整型向c#一样写入 new byte[4] 中
在jdk1.5 中 int i=07010101; 这样写编译器并没有抱错
但int i=08010101; 这样就抱错有没有人可以给解释一下还有在java中怎么可以把08010101 这样的无符号整型向c#一样写入 new byte[4] 中
你需要的话可以 int i = 0x08 << 24 | 0x01 << 16 | 0x01 << 8 | 01
定长String, 它由一系列的10进制字符组成(ASCII码‘0’---‘9’),右齐左补‘0’(ASCII码48)。
08010101 是这个协议中的一个字段 协议中它的定长是4个字节
在c# 中可以把 08010101定义为一个无符号整型就可以解决
但是在java中要怎么解决哪???
----------------------------
首先,以0打头的数表示8进制数,8进制数最大数字只能到7(即0-7是有效数字),而08xxx中,8已经不是有效数字了,所以就报错了。
像ChDw(米)说的
你需要的话可以 int i = 0x08 << 24 | 0x01 << 16 | 0x01 << 8 | 01
要存在byte中可以这样
byte b[] = new byte[4];
b[0] = 0x08;
b[1] = 0x01;
b[2] = 0x01;
b[3] = 0x01;
或
int i = 0x08 << 24 | 0x01 << 16 | 0x01 << 8 | 01
b[0] = (i & 0xff000000) >> 24;
b[1] = (i & 0x00ff0000) >> 16;
b[2] = (i & 0x0000ff00) >> 8;
b[3] = (i & 0x000000ff);
public static byte[] hexString2byte(String hexString) {
if (hexString == null || hexString.length() % 2 != 0)
return null;
byte[] result = new byte[hexString.length() / 2];
for (int i = 0; i < hexString.length(); i += 2)
result[i / 2] = (byte) (Integer.parseInt(hexString.substring(i,
i + 2), 10) & 0xff);
return result;
}
但是不知道服务器那边能不能认啊
先谢谢大家了 到测试的时候服务器那边不认再向大家请教