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