Вы можете преобразовать int
в 4 байта следующим образом:
public byte[] getBytesForInt(int value) {
byte[] bytes = new byte[4];
bytes[0] = (byte) ((value >> 24) & 0xFF);
bytes[1] = (byte) ((value >> 16) & 0xFF);
bytes[2] = (byte) ((value >> 8) & 0xFF);
bytes[3] = (byte) (value & 0xFF);
return bytes;
}
Это поместит их в порядок с прямым порядком байтов, который часто используется для транспорта (см. Порядковый номер ).В качестве альтернативы, если вы уже имеете дело с OutputStream
, вы можете заключить его в DataOutputStream
и просто использовать writeInt()
.Например, согласно вашему шаблону:
FileOutputStream fileOut = new FileOutputStream("foo.dat");
DataOutputStream dataOut = new DataOutputStream(fileOut);
dataOut.writeInt(numFiles);
dataOut.writeInt(numBytesInName);
dataOut.writeUTF(filename);
dataOut.writeLong(numBytesInFile);
dataOut.write(fileBytes);
Обратите внимание, что writeLong()
на самом деле составляет 8 байтов.Я не уверен, почему вы хотите использовать 10, и я думаю, что 8 из long
- это достаточно.