我想將十六進制數據轉換爲有符號整數/十進制,並不能找出我做錯了什麼。我需要FE
變爲-2
。轉換二進制爲有符號整數/十進制
我使用的是Convert.ToInt32(fields[10], 16)
,但我得到254
而不是-2
。
任何援助將不勝感激。
我想將十六進制數據轉換爲有符號整數/十進制,並不能找出我做錯了什麼。我需要FE
變爲-2
。轉換二進制爲有符號整數/十進制
我使用的是Convert.ToInt32(fields[10], 16)
,但我得到254
而不是-2
。
任何援助將不勝感激。
int
是32個位寬,所以0xFE的真的被解釋爲0x000000FE用於Convert.ToInt32(string, int)
目的,這在int
空間等於254。由於你想使用帶符號的字節範圍值,所以使用Convert.ToSByte(string, int)
代替(默認情況下,byte
未簽名,所以你需要sbyte
類型)。
Convert.ToSByte("FE",16)
完美!非常感謝!!! – StarScr3am77
解釋值作爲一個符號字節:
sbyte value = Convert.ToSByte("FE", 16); //-2
嘛Int32
的邊界是-2 147 483 648到2 147 483 647所以FE
比賽254
如果你想在128左右做一次總結,最優雅的解決方案是proably到使用符號字節(sbyte
):爲什麼要打開`FE`成`-2`,而不是`254`
csharp> Convert.ToSByte("FE",16);
-2
你能否解釋一下?你怎麼知道是Y你需要得到'-2'而不是'254'? –
我正在與之合作的那個人想要看到一個簽名的值,不知道爲什麼,但這就是要求。雖然這是可能的。此鏈接在JavaScript中執行。 http://www.free-test-online.com/binary/signed_converter.html – StarScr3am77
這不是一個有符號整數的小數 - 如果你想以這種方式讀取它,它是一個有符號的字節。 –