Das traditionelle 4-Bit-Hex ist ziemlich direkt. Hex String to Integer (Angenommen, der Wert wird im Feld FHexString gespeichert):
CONVERT(BIGINT,CONVERT(varbinary(4),
(SELECT master.dbo.fn_cdc_hexstrtobin(
LEFT(FMEID_ESN,8)
))
))
Integer to Hex String (Angenommen, der Wert wird im Feld FInteger gespeichert):
(SELECT master.dbo.fn_varbintohexstr(CONVERT(varbinary,CONVERT(int,
FInteger
))))
Es ist wichtig zu beachten, dass, wenn Sie anfangen, Bitgrößen zu verwenden, die eine gemeinsame Nutzung von Registern verursachen, insbesondere auf einem Intel-Computer, Ihre High- und Low- sowie Left- und Rechte in den Registern aufgrund der Little-Endian-Natur von Intel ausgetauscht werden. Wenn Sie beispielsweise eine Varbinary (3) verwenden, sprechen wir von einem 6-stelligen Hex. In diesem Fall werden Ihre Bits als die folgenden Indizes von rechts nach links "54,32,10" gepaart. In einem Intel-System würden Sie "76,54,32,10" erwarten. Da Sie nur 6 der 8 verwenden, müssen Sie daran denken, die Swaps selbst durchzuführen. "76,54" gilt als Ihre Linke und "32,10" als Ihre Rechte. Das Komma trennt Ihr Hoch und Tief. Intel tauscht die Höhen und Tiefen, dann die Linken und die Rechte. Um eine Konvertierung durchzuführen ... seufz, du musst sie zum Beispiel selbst tauschen,
(SELECT master.dbo.fn_replvarbintoint(
CONVERT(varbinary(3),(SELECT master.dbo.fn_cdc_hexstrtobin(
RIGHT(FHex8,2)+
LEFT(RIGHT(FHex8,4),2)+
LEFT(RIGHT(FHex8,6),2)
)))
))
Es ist ein bisschen kompliziert, also würde ich versuchen, meine Konvertierungen in Hexs mit 8 Zeichen (varbinary (4)) beizubehalten.
Zusammenfassend sollte dies Ihre Frage beantworten. Umfassend.