How to handle byte arrays with Java’s ByteBuffer
I had never used the java.nio.ByteBuffer class, but I had a chance to use it in a telegram, so I’ll summarize.
It converts a Map instance to a string and then to a byte array.
Map<String, Object> params = new HashMap<>(); params.put("key1", "val1"); params.put("key2", "val2"); ObjectMapper objectMapper = new ObjectMapper(); String str = objectMapper.writeValueAsString(vdParams); System.out.println(str); // {"key1":"val1","key2":"val2"} byte[] byteArr = objectMapper.writeValueAsString(vdParams).getBytes(); // Convert from String to byte array
Allocate capacity with the ByteBuffer.allocate() method and create an instance
Instantiate by specifying the capacity using the ByteBuffer.allocate() method.
The following creates a buf variable with a 64-byte buffer.
ByteBuffer buf = ByteBuffer.allocate(64);
Use the put() method to write to a variable. The argument is a byte[].
ByteBuffer buf = ByteBuffer.allocate(32); ByteBuffer putBuf = buf.put("test".getBytes("UTF-8")); // Set the byte array of the character "test" byte[] byteArr = putBuf.array(); System.out.println(Hex.encodeHexString(byteArr)); System.out.println(byteArr.length);
Returns a hexadecimal string of type String with a byte array set to the argument of the org.apache.commons.codec.binary.Hex.encodeHexString() method.
The output is as follows
7465737400000000000000000000000000000000000000000000000000000000
It will fill in the trailing zeros (0x00). This may be useful for fixed-length handling.
Hex.encodeHexString method
The org.apache.commons.codec.binary.Hex.encodeHexString() method converts a byte array to a hexadecimal string.
Hex.decodeHex method
To convert a string in hexadecimal notation to a byte array, use the org.apache.commons.codec.binary.Hex.decodeHexString() method.
byte[] buf = Hex.decodeHex("1640000000".toCharArray());
コメント