different results when converting int to byte array - .NET vs Java

后端 未结 1 1261
后悔当初
后悔当初 2020-12-10 07:41

I am trying to send data from a java client to a c# server and having trouble converting int to byte array.

when i am converting the number 8342 with c# using this c

相关标签:
1条回答
  • 2020-12-10 08:31

    You have to change endianess:

     bb.order(ByteOrder.LITTLE_ENDIAN)
    

    Java stores things internally as Big Endian, while .NET is Little Endian by default.

    Also there is difference in signed and unsigned between Java and .NET. Java uses signed bytes, C# uses unsigned. You will have to change that as well.

    Basically, that is why you are seeing -106 ( 150 - 256 )

    You will have to do something like the utility method below:

    public static void putUnsignedInt (ByteBuffer bb, long value)
        {
           bb.putInt ((int)(value & 0xffffffffL));
        }
    

    Note that value is long.

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