La traditionnelle 4 bits hex est assez direct.
Chaîne hexadécimale en Entier (en Supposant que la valeur est stockée dans le champ appelé FHexString) :
CONVERT(BIGINT,CONVERT(varbinary(4),
(SELECT master.dbo.fn_cdc_hexstrtobin(
LEFT(FMEID_ESN,8)
))
))
Entier en Chaîne Hexadécimale (en Supposant que la valeur est stockée dans le champ appelé FInteger):
(SELECT master.dbo.fn_varbintohexstr(CONVERT(varbinary,CONVERT(int,
FInteger
))))
Important à noter est que lorsque vous commencez à utiliser bits tailles registre des causes de partage, en particulier sur un ordinateur intel Haut et Bas et de Gauche et de Droits dans les registres vont être remplacées en raison de la little endian nature de Intel. Par exemple, lors de l'utilisation d'un varbinary(3), nous parlons d'un 6 caractères Hex. Dans ce cas, votre bits sont couplées par les indices suivants de la droite vers la gauche "54,32,10". Dans un système intel, vous devez vous attendre "76,54,32,10". Puisque vous êtes seulement à l'aide de 6, de 8, vous devez vous rappeler de faire les swaps de vous-même. "76,54" seront admissibles à votre gauche et "32,10" seront admissibles à votre droite. La virgule sépare de votre haute et basse. Intel swaps de haut et de bas, puis la gauche et droits. Donc pour faire une conversion...soupir, vous avez obtenu à l'échange de vous-mêmes pour l'exemple, l'exemple suivant convertit les 6 premiers de 8 caractères hex:
(SELECT master.dbo.fn_replvarbintoint(
CONVERT(varbinary(3),(SELECT master.dbo.fn_cdc_hexstrtobin(
--intel processors, registers are switched, so reverse them
----second half
RIGHT(FHex8,2)+ --0,1 (0 indexed)
LEFT(RIGHT(FHex8,4),2)+ -- 2,3 (oindex)
--first half
LEFT(RIGHT(FHex8,6),2) --4,5
)))
))
C'est un peu compliqué, donc je voudrais essayer de garder mes conversions à 8 caractères hex de l' (varbinary(4)).
En résumé, cela devrait répondre à votre question. De manière globale.