Network Order short (Java)

后端 未结 3 1614
旧巷少年郎
旧巷少年郎 2021-01-20 04:04

I need to send a Network Order short for a game server I\'m writing using Java. I read about network order, but I couldn\'t find any details about a short that is sent befor

相关标签:
3条回答
  • 2021-01-20 04:11

    Java NIO bytes buffers have support for changing the byte order. Network byte order is Big Endian therefore.

    // Allocate a big endian byte buffer
    ByteBuffer bb = ByteBuffer.allocate(4096);
    bb.order(ByteOrder.BIG_ENDIAN);
    bb.putShort(12345);
    
    // Write the buffer to an NIO channel
    bb.flip();
    channel.write(bb);
    

    Byte Order is the order in which the bytes for numerical values that are larger than a single byte are stored. There are 2 flavours Big Endian (most significant byte first) and Little Endian (least significant byte first).

    0 讨论(0)
  • 2021-01-20 04:12

    You can wrap your OutputStream with DataOutputStream.

    You can then use DataOutputStream.writeShort. By contract the method writes data in network order.

    0 讨论(0)
  • 2021-01-20 04:33

    In java, a short int is a 2 byte quantity. Network byte order send the high-order byte first, followed by the next highest-order byte and so on, with the low order byte sent last. If you have an OutputStream o, and a short i, then

    o.write((i >> 8) & 0xff);
    o.write(i & 0xff);
    

    send the short in network byte order. I recommend using a DataOutputStream which has a method writeShort() (and writeInt, writeLong, etc.) which automatically write in network byte order.

    0 讨论(0)
提交回复
热议问题