Ciao,
dovendo convertire delle stringhe di un codice a barre in Hex
avevo scritto la seguente funzione in C#
codice:
private string UInt64ToHexString(UInt64 b)
        {
            StringBuilder sb;
            sb = new StringBuilder();
        sb.Append(HEXVALUES[(b >> 60) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 56) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 52) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 48) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 44) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 40) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 36) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 32) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 28) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 24) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 20) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 16) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 12) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 8) & 0x0000000F]);
            sb.Append(HEXVALUES[(b >> 4) & 0x0000000F]);
            sb.Append(HEXVALUES[b & 0x000000000000000F]);
            return sb.ToString();
        }
        private static readonly string[] HEXVALUES = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };
...e andava alla grande ...
ad esempio
4539628426429336365
viene correttamente trandotto nell'id di una cpu
0B00000079D2EE2D

ora devo fare la stessa cosa direttamente su excel per alcune necessità...

e, conoscendone poco... ho trovato questa funzione per il modulo di Excel ..


codice:
Public Function DecToHex(Dec As Double) As String
     
    Dim i               As Long
    Dim n               As Long
    Dim PlaceValHex     As Long
    Dim Hex(1 To 256)   As String
    Dim HexTemp         As String
    Dim Divisor         As Long
     
    Dec = Int(Dec)
     
    For i = 256 To 2 Step -1
        If Dec >= 16 ^ (i - 1) And Dec > 15 Then
            PlaceValHex = Int(Dec / (16 ^ (i - 1)))
            Dec = Dec - (16 ^ (i - 1)) * PlaceValHex
            Select Case PlaceValHex
            Case 0 To 9
                Hex(i) = CStr(PlaceValHex)
            Case Is = 10
                Hex(i) = "A"
            Case Is = 11
                Hex(i) = "B"
            Case Is = 12
                Hex(i) = "C"
            Case Is = 13
                Hex(i) = "D"
            Case Is = 14
                Hex(i) = "E"
            Case Is = 15
                Hex(i) = "F"
            End Select
        Else
            Hex(i) = "0"
        End If
    Next i
    PlaceValHex = Dec
    Select Case PlaceValHex
    Case 0 To 9
        Hex(1) = CStr(PlaceValHex)
    Case Is = 10
        Hex(1) = "A"
    Case Is = 11
        Hex(1) = "B"
    Case Is = 12
        Hex(1) = "C"
    Case Is = 13
        Hex(1) = "D"
    Case Is = 14
        Hex(1) = "E"
    Case Is = 15
        Hex(1) = "F"
    End Select
    For i = 256 To 1 Step -1
        If Hex(i) = "0" Then
        Else
            n = i
            Exit For
        End If
    Next i
    For i = n To 1 Step -1
        HexTemp = HexTemp & Hex(i)
    Next i
    DecToHex = HexTemp
     
End Function
il problema è che non dà lo stesso risultato,
ma 4539628426429336365
viene
B00000079D2EE00

sapete darmi una mano?

grazie