使用包装一个ByteArrayOutputStream
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()
DataOutputStream stream = new DataOutputStream(byteArrayOutputStream);
try {
stream.writeInt(i);
stream.writeShort(s0);
stream.writeShort(s1);
stream.writeShort(s2);
stream.flush();
} catch (IOException e) {
// this can't happen, but you still require a try catch block
}
byte[] array = byteArrayOutputStream.toByteArray();
如果你的代码可能会被解析与无符号整数,那么你就要有一点头痛的类似字节数组DataOutputStream类。也就是说,你将不得不检查负数,并适当地处理它们。 例如。
int unsignedIntAsSignedInt = inStream.readInt();
long realData;
if (unsignedIntAsSignedInt < 0) {
realData = ((long) unsignedIntAsSignedInt) - (((long)Integer.MIN_VALUE) * 2);
} else {
realData = unsignedIntAsSignedInt;
}
首先,Java没有无符号类型。你需要付出一些沉重的代价。 – 2012-04-24 16:09:54
有几种方法可以将Java类型视为未签名,但它们需要非常小心,不要混淆这些值。 – 2012-04-24 16:13:07
您可以写入无符号值,就好像它们是有符号的。通常最多只需要演员阵容。 – 2012-04-24 16:22:26