如何在Byte数组中存储十六进制字符串?

时间:2015-03-23 11:46:24

标签: java bytearray

我需要帮助来创建标题,如下面的解释,我对字节转换和大端约定没有信心。

我认为我的问题来自于行byte[] VERSION = "01".getBytes();我不知道如何“强制”将字符串存储在一个字节中。

标题创建

public static final int HEADER_SIZE = 8;
byte[] header = new byte[HEADER_SIZE];

// Header struture
/*
*byte 0   : Version
*byte 1   : Inverse Version
*byte 2-3 : Type
*byte 4-7 : Length
*/

// Hex values
byte[] VERSION = "01".getBytes();
byte[] INVERSE_VERSION = "FE".getBytes();
byte[] TYPE = "9000".getBytes();
byte[] LENGTH = "02".getBytes();

ByteBuffer buf = ByteBuffer.wrap(this.header);
    buf.order(ByteOrder.BIG_ENDIAN);
    buf.put(VERSION);
    buf.put(INVERS_VERSION);
    buf.put(TYPE);
    //buf.put(LENGTH); <-- Overflow

//out
System.out.println(new String(buf.array(), "ASCII"));

实际输出

01FE9000

预期输出

01FE900020000000

0 个答案:

没有答案