Ciao,
dovendo convertire delle stringhe di un codice a barre in Hex
avevo scritto la seguente funzione in C#
...e andava alla grande ...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" };
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 ..
il problema è che non dà lo stesso risultato,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
ma 4539628426429336365
viene
B00000079D2EE00
sapete darmi una mano?
grazie![]()

Rispondi quotando