'進制轉換(二進制、八進制、十進制和十六進制相互轉換)
Function ConvertString(ByVal value As String, ByVal fromBase As Integer, ByVal toBase As Integer)
Dim intValue As Integer = Convert.ToInt32(value, fromBase)
Return Convert.ToString(intValue, toBase)
End Function
怎么樣用十六進制轉換得到正負進制,例如,我從網上找上面演算法,FF01十六進制轉換為十進制是65281,但是實際應該為-255,求高手告知有沒有函式轉換,一直想不明白
uj5u.com熱心網友回復:
先別想著代碼這么寫,ff01 實際為什么是-255?進制轉換單純是個數學問題
編碼才是計算機問題,不同計算機處理不同,編碼有原碼、反碼、補碼,負數用補碼表示,要說清楚幾位,而且FF01也沒說清楚高位在前還是高位在后
uj5u.com熱心網友回復:
這個事吧,哪有神馬正負進制。。。據猜測,你描述的是想把十六進制轉十進制。。。。。。。辣么,你這個FF01就不靠譜了,首先最高位是符號位,其次你用的是short嗎。。。關于這個問題,有很多麻煩事在里面。。。
如果你想轉化16進制到10進制,對于正數來說,可以直接用&H:
Dim a As Integer = "&H" & "000000ff"
對于負數,自己判斷一下,自己想吧,一位一位的寫出來到低是幾,是原碼、反碼還是補碼,另外把空著的位用你的0占起來。有時候即使搭積木也需要用用腦子學點東西才能搭起來。
uj5u.com熱心網友回復:
x = 65281if x > 32767 then x = x-65536
uj5u.com熱心網友回復:
十六進制負數通常用原數的補碼表示,補碼為原數的反碼+1,兩個位元組表示255為00FF,00FF的反碼為FF00(反碼為該數的二進制每一位取反,0000 0000 1111 1111每位取反為:1111 1111 0000 0000,即FF00),反碼加1,則為FF01,所以-255即為FF01,如果用三個位元組表示-255,則為FFFF01轉載請註明出處,本文鏈接:https://www.uj5u.com/net/17971.html
標籤:VB.NET
