使用包裝一個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