16进制转为10进制求源码

解决方案 »

  1.   

    int x = 0xAF;
    System.out.println("x = " + x);
    它本身自动会转呀。
      

  2.   

    Option Explicit
    '扢离諷秶硐褫眕怀杅趼,麼湮苤迡
    Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd&, ByVal nIndex&) As Long
    Public Declare Function SetWindowLong& Lib "user32" Alias "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)
    '杅郪葩秶
    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)Global Const GWL_STYLE As Long = (-16&)
    Global Const ES_UPPERCASE = &H8&
    Global Const ES_LOWERCASE = &H10&
    Global Const ES_NUMBER = &H2000'/************************************************************************************/
    '10進制轉換為16進制
    '/************************************************************************************/
    Public Function HEX_to_DEC(ByVal Hex As String) As String
        Dim i As Long
        Dim B As String    
        Hex = UCase(Hex): B = 0
        For i = 1 To Len(Hex)
            Select Case Mid(Hex, Len(Hex) - i + 1, 1)
                Case "0": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 0)
                Case "1": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 1)
                Case "2": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 2)
                Case "3": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 3)
                Case "4": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 4)
                Case "5": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 5)
                Case "6": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 6)
                Case "7": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 7)
                Case "8": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 8)
                Case "9": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 9)
                Case "A": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 10)
                Case "B": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 11)
                Case "C": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 12)
                Case "D": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 13)
                Case "E": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 14)
                Case "F": B = BigIntAdd(CStr(B), 16 ^ (i - 1) * 15)
            End Select
        Next i
        HEX_to_DEC = B
    End Function
    '/************************************************************************************/
    '16進制轉換為10進制
    '/************************************************************************************/
    Public Function DEC_to_HEX(ByVal x As String) As String
      Dim dec, Temp, remain         As Double
      dec = Val(x)
      Do
        remain = Int(dec / 16)
        Temp = remain * 16
        DEC_to_HEX = Hex(dec - Temp) & DEC_to_HEX
        dec = remain
      Loop While dec
      If Len(DEC_to_HEX) Mod 2 Then
        DEC_to_HEX = "" & DEC_to_HEX
      End If
    End Function'/************************************************************************************/
    '/滲杅髡夔ㄩ硐埰勍TextBox怀杅趼趼睫
    '/統杅佽隴ㄩ統杅珨 TextBox勤砓
    '/晤 迡 ㄩ衾茖茖
    '/晤迡ㄩ2007-10-17
    '/妏蚚源楊ㄛ婓敦极腔Form_Load 岈璃覃蚚滲杅撈褫
    '/************************************************************************************/
    Public Function NumbersOnly(tBox As TextBox)
    Dim DefaultStyle As Long
      DefaultStyle = GetWindowLong(tBox.hWnd, GWL_STYLE)
      NumbersOnly = SetWindowLong(tBox.hWnd, GWL_STYLE, DefaultStyle Or ES_NUMBER)
    End Function'/************************************************************************************/
    '/滲杅髡夔ㄩ硐埰勍TextBox怀湮迡趼睫
    '/統杅佽隴ㄩ統杅珨 TextBox勤砓
    '/晤 迡 ㄩ衾茖茖
    '/晤迡ㄩ2007-10-17
    '/妏蚚源楊ㄛ婓敦极腔Form_Load 岈璃覃蚚滲杅撈褫
    '/************************************************************************************/
    Public Function UpperCaseOnly(tBox As TextBox)
    Dim DefaultStyle As Long
      DefaultStyle = GetWindowLong(tBox.hWnd, GWL_STYLE)
      UpperCaseOnly = SetWindowLong(tBox.hWnd, GWL_STYLE, DefaultStyle Or ES_UPPERCASE)
    End Function'/************************************************************************************/
    '/滲杅髡夔ㄩ湮淕杅眈樓
    '/統杅佽隴ㄩ謗跺趼睫揹
    '/晤 迡 ㄩ衾茖茖
    '/晤迡ㄩ2008-8-29
    '/************************************************************************************/
    Public Function BigIntAdd(sNum1$, sNum2$) As String
    Dim dNum1 As Double, dNum2 As Double
    '淕杅
        If IsNumeric(sNum1) = False Or IsNumeric(sNum2) = False Then
            BigIntAdd = "": Exit Function
        End If
        On Error GoTo BigIntAddBegin
        dNum1 = CDbl(sNum1): dNum2 = CDbl(sNum2)    BigIntAdd = CDbl(dNum1) + CDbl(dNum2)
        Exit Function
        
    BigIntAddBegin:
    '湮淕杅
    Dim arrNum1() As Integer
    Dim arrNum2() As Integer
    Dim arrReturn() As Integer
    Dim iCount As Integer
    Dim i As Integer
        '蔚趼睫揹溫善杅郪笢
        iCount = IIf(Len(sNum1) > Len(sNum2), Len(sNum1) - 1, Len(sNum2) - 1)
        ReDim arrNum1(iCount): ReDim arrNum2(iCount)
        StrToArr sNum1, arrNum1()
        StrToArr sNum2, arrNum2()
        '杅郪眈樓
        i = iCount: BigIntAdd = ""
        Do While i >= 0
            iCount = arrNum1(i) + arrNum2(i)
            If iCount >= 10 And i > 0 Then
                arrNum1(i - 1) = arrNum1(i - 1) + CInt(Left(CStr(iCount), Len(CStr(iCount)) - 1))
                iCount = iCount - CInt(Left(CStr(iCount), Len(CStr(iCount)) - 1) & "0")
                BigIntAdd = iCount & BigIntAdd
            Else
                BigIntAdd = iCount & BigIntAdd
            End If
            i = i - 1
        Loop
    End Function
    '/************************************************************************************/
    '/滲杅髡夔ㄩ蔚趼睫揹溫善杅郪笢
    '/統杅佽隴ㄩ
    '/晤 迡 ㄩ衾茖茖
    '/晤迡ㄩ2008-8-29
    '/************************************************************************************/
    Public Function StrToArr(strNum As String, ReturnArr() As Integer)
    Dim i As Integer
    Dim sTemp As String
        sTemp = strNum: i = 0
        Do While sTemp <> ""
            ReturnArr(UBound(ReturnArr) - i) = Right(sTemp, 1)
            sTemp = Left(sTemp, Len(sTemp) - 1)
            i = i + 1
        Loop
    End Function
      

  3.   

    后面的H是Hex的缩略,表示16进制
      

  4.   

    应该会自动给转码的撒 java提供了这种机制,上面几楼的朋友说的甚是。
      

  5.   

    电脑只人2进制。显示出来不同的形式都是字符串不是数字本身吧。toString的时候可以指定显示几进制吧比如:Integer.toHexString
    估计你理解一下找个代码就知道了吧
    public class NumberTest {
      public static void main(String[] args) {
        int var_int8 = 010;
        int var_int16 = 0xA;
        System.out.println("var_int8 : " + var_int8);
        System.out.println("var_int16 : " + var_int16);    System.out.println("---------- 8进制一览 -----------");
        for (int i = 000; i < 64; i++) {      if (Integer.toOctalString(i).length() == 1) {
            System.out.println(
                "设定的数值[00" + Integer.toOctalString(i) + "] : 10进制的数值[" + i + "]"
            );
          } else {
            System.out.println(
                "设定的数值[0" + Integer.toOctalString(i) + "] : 10进制的数值[" + i + "]"
            );
          }
        }
        System.out.println("---------- 16进制一览 -----------");
        for(int i = 0x0; i < 16; i++) {
          System.out.println(
              "设定的数值[0x" + Integer.toHexString(i) + "] : 10进制的数值[" + i + "]"
          );
        }
      }
    }
      

  6.   

    String strValue = "1abc";
    int value = Integer.parseInt(strValue,16);
      

  7.   

    public class Test {
        public static void main(String[] args) {
            String hex = "0xFE";
            System.out.println(Integer.valueOf(hex.substring(2), 16));
        }
    }