Hello,

Je me pose une question (peut-être qu'il existe une réponse simple ), voilà mon cas :
Je cherche à convertir en hexadécimal une valeur entière (bigint) et j'ai fait plusieurs tests, dont celui-ci qui me laisse perplexe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT CONVERT(bigint, 0xFFFFFFFF)
=> 4294967295 (parfait, logique c'est la valeur maximale sur 4 octets)

Maintenant si je fais l'inverse pour retrouver ma valeur hexadécimal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT CONVERT(varbinary(4), 4294967295)
=> 0x0A000001 alors que je m'attendais à avoir 0xFFFFFFFF

Du coups j'ai poussé à 8 octets :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT CONVERT(varbinary(8), 4294967295)
=> 0x0A000001FFFFFFFF je ne comprends pas !

Maintenant en castant ma valeur en bigint, j'obtiens le bon résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT CONVERT(varbinary(4), CAST(4294967295 AS bigint))
=> 0xFFFFFFFF


Du coup la question est : Comment le moteur SQL interprète t il la valeur brute 4294967295 ??