根据规范,您必须按照以下方式构建形状的数据包
| 2 | 2 | N ........ |
现在,这可能非常容易,并且有多种方法可以实现,我建议您使用以下一种方法:
import java.nio.ByteBuffer;import java.nio.ByteOrder;static byte[] buildPacket(int magicNumber, String payload) throws UnsupportedEncodingException{ // 4 bytes for header + payload ByteBuffer buffer = ByteBuffer.allocate(2 + 2 + payload.length()); // we set that we want big endian numbers buffer.order(ByteOrder.BIG_ENDIAN); buffer.putShort((short)magicNumber); buffer.putShort((short)payload.length()); buffer.put(payload.getBytes("US-ASCII")); return buffer.array();}public static void main (String[] args) throws java.lang.Exception{ try { byte[] bytes = buildPacket(0xFF10, "foobar"); for (byte b : bytes) System.out.printf("0x%02X ", b); } catch (Exception e) { e.printStackTrace(); }}请注意,如果您声明
short直接接受幻数的方法,则将无法传递文字幻数,
> 32767因为它
short是在Java中签名的。



