【发布时间】:2014-03-03 09:04:05
【问题描述】:
我正在构建一个由多个组件组成的项目,这些组件使用套接字在字节数组中相互通信。问题是一个组件是用 C 编写的并且支持 Unsigned 原始类型,而其他组件是用 Java 编写的并且不支持 Unsigned 类型。我正在尝试开发对 Java 中无符号类型的支持。我是 Java 新手。谁能告诉我从字节数组中解码 uint32 和 uint64 的正确方法。
我正在使用以下函数进行 int32 和 int64 的转换
public static int int32Converter(byte b[], int start) {
return ((b[start] << 24) & 0xff000000 |(b[start + 1] << 16) & 0xff0000
| (b[start + 2] << 8) & 0xff00 | (b[start + 3]) & 0xff);
}
public static long int64Converter(byte buf[], int start) {
return ((buf[start] & 0xFFL) << 56) | ((buf[start + 1] & 0xFFL) << 48)
| ((buf[start + 2] & 0xFFL) << 40)
| ((buf[start + 3] & 0xFFL) << 32)
| ((buf[start + 4] & 0xFFL) << 24)
| ((buf[start + 5] & 0xFFL) << 16)
| ((buf[start + 6] & 0xFFL) << 8)
| ((buf[start + 7] & 0xFFL) << 0);
}
谢谢!
【问题讨论】:
标签: java c binary type-conversion unsigned-integer