我有一個方法,使一個字節數組按照以下格式。如何獲得我用來製作大字節數組的實際字節?
- 首先它得到avroBytes。
- 然後它活潑地壓縮它。
- 然後它使用特殊格式創建另一個字節數組,如下所示。
下面是方法:
public static byte[] serialize(final Record record, final int clientId,
final Map<String, String> holderMap) throws IOException {
byte[] avroBytes = getAvroBytes(holderMap, record);
byte[] snappyCompressed = Snappy.compress(avroBytes);
int size = (2+8+4) + snappyCompressed.length;
ByteBuffer buffer = ByteBuffer.allocate(size);
buffer.order(ByteOrder.BIG_ENDIAN);
buffer.putShort((short) clientId);
buffer.putLong(System.currentTimeMillis());
buffer.putInt(snappyCompressed.length);
buffer.put(snappyCompressed);
buffer.rewind();
byte[] bytesToStore = new byte[size];
buffer.get(bytesToStore);
return bytesToStore;
}
現在,我想我的實際avroBytes
一旦我有bytesToStore
byte[] bytesToStore = serialize(......);
// now how can I get actual `avroBytes` using bytesToStore?
有沒有辦法把它找回來?
用兩種方法拆分你的方法:一個生成並返回avroBytes,第二個將它們作爲參數生成bytesToStore。 –
在我的情況下,在程序結束時,一旦我有'bytesToStore',那麼我需要返回我的avroBytes進行一些調試。這只是一次練習,所以這就是爲什麼我想做一些驗證。 – john
總是有'Arrays.copyOfRange(bytesToStore,2 + 8 + 4,bytesToStore.length)'。但我懷疑你最好返回ByteBuffer而不是字節數組。 – VGR