得到字节INT在Java中,编码首先在C#(Get int from bytes in Java,

2019-09-16 12:50发布

我有一个问题从一个字节数组中C#的第一编码转换一个int。 我首先将它转换为大端因为Java工作在大edian而非小。 下面的代码编码成成字节

    Console.WriteLine("A new data client has connected!");
    byte[] welcomeMessage = ASCIIEncoding.ASCII.GetBytes("Welcome young chap! Please let me know about anything you need!");

    welcomeMessage = Byte.add(BitConverter.GetBytes(System.Net.IPAddress.HostToNetworkOrder(20)), welcomeMessage);

Byte.add两个阵列附加在一起。 这工作,因为我有C#之间用它为C#。 欢迎消息首先被装入一个头字节,让客户知道的信息是什么。 我得到在Java端奇怪的值,当我尝试对其进行解码。 我不知道如果我解码或不正确编码。 Java端是这样。 这是一个Android设备上运行:

   if (ByteBuffer.wrap(buffer).getInt() == 20)
   {
          latestMessage = new String(buffer); 
   }
   latestMessage = String.valueOf(ByteBuffer.wrap(buffer).getInt(0)); //Lets me see what value this is. Cant attach debugger for some reason ATM.

Answer 1:

甲字节缓冲区可以被配置为多字节值与使用任一或大或小端解码order()方法。

例如:

final ByteBuffer bb = ByteBuffer.wrap(buffer);
bb.order(ByteOrder.LITTLE_ENDIAN);

final int i = bb.getInt();
...


Answer 2:

也许BitConverter类能有所帮助。 看看这里 。



文章来源: Get int from bytes in Java, encoded first in C#