簡體   English   中英

將int轉換為字節數組時的不同結果 - .NET vs Java

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM