getbytes endian convert cast c# java numbers bytearray

endian - Java y C#- matriz de bytes para diferencia de conversión larga



cast int c# (1)

Esta es una diferencia en endianness .

Si invierte la matriz de bytes, funciona como se esperaba:

BitConverter.ToInt64(new byte[] { 8, 204, 137, 162, 234, 40, 150, 50 }, 0)

Puede establecer el endianness en Java llamando a bb.order(ByteOrder.LITTLE_ENDIAN) .

Por cierto, la forma más fácil de jugar con estas cosas es usar LINQPad .

Esto es extraño para mí: cuando corro en Java

byte[] data = new byte[] { 50, -106, 40, -22, -94, -119, -52, 8 }; ByteBuffer bb = ByteBuffer.wrap( data ); System.out.println( bb.getLong() );

el resultado es 3645145936617393160

cuando corro en C #

//unsigned values (signed&0xff) byte[] bytes = new byte[] { 50, 150, 40, 234, 162, 137, 204, 8 }; long l = BitConverter.ToInt64(bytes, 0); System.Console.Write(String.Format("{0}/n", l)); System.Console.ReadKey();

resultado es 634032980358633010

¿Puedes ayudarme a entender esto?
¡Gracias!