[英]different results when converting int to byte array - .NET vs Java
我試圖將數據從java客戶端發送到ac#server並且無法將int轉換為字節數組。
當我使用此代碼使用c#轉換數字8342時:
BitConverter.GetBytes(8342)
結果是:x [4] = {150,32,0,0}
用java我用:
ByteBuffer bb = ByteBuffer.allocate(4);
bb.putInt(8342);
return bb.array();
這里的結果是:x [4] = {0,0,32,-106}
誰能解釋一下? 我是java新手,這是我第一次在字節數組中看到負數。
你必須改變endianess:
bb.order(ByteOrder.LITTLE_ENDIAN)
Java將內部存儲為Big Endian,而.NET默認為Little Endian。
Java和.NET之間的簽名和無符號也有區別。 Java使用帶符號的字節,C#使用無符號。 你也必須改變它。
基本上,這就是為什么你看到-106(150 - 256)
您必須執行以下實用程序方法:
public static void putUnsignedInt (ByteBuffer bb, long value)
{
bb.putInt ((int)(value & 0xffffffffL));
}
請注意,值很長。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.