2

我在从首先用 C# 编码的字节数组转换 int 时遇到问题。我首先将其转换为大端序,因为 Java 以大端序而不是小端序工作。以下代码将 into 编码为字节

    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端就是这样。这是在安卓设备上运行的:

   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.
4

2 回答 2

3

可以将ByteBufferorder()配置为使用该方法将多字节值解码为大端或小端。

例如:

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

final int i = bb.getInt();
...
于 2012-04-15T05:39:44.727 回答
0

也许BitConverter类可以提供帮助。看看这里

于 2012-04-15T05:34:11.630 回答