FirebirdSQL logo
Notation hexadécimale des nombres

Les constantes entières peuvent être spécifiées au format hexadécimal.A partir de Firebird 4.0.1, les nombres composés de 17 à 32 chiffres hexadécimaux seront interprétés comme INT128.

Syntaxe:
{x|X}<hexdigits>

<hexdigits> ::= 1-32 of <hexdigit>

<hexdigit> ::= 0..9 | A..F | a..f
Table 1. Constantes de types entiers au format hexadécimal
Nombre de chiffres hexadécimaux Type de données

1-8

INTEGER

9-16

BIGINT

17-32

INT128

Example 1. Constantes hexadécimales
SELECT 0x6FAA0D3 FROM rdb$database -- returns 117088467
SELECT 0x4F9 FROM rdb$database -- returns 1273
SELECT 0x6E44F9A8 FROM rdb$database -- returns 1850014120
SELECT 0x9E44F9A8 FROM rdb$database -- returns -1639646808 (INTEGER)
SELECT 0x09E44F9A8 FROM rdb$database -- returns 2655320488 (BIGINT)
SELECT 0x28ED678A4C987 FROM rdb$database -- returns 720001751632263
SELECT 0xFFFFFFFFFFFFFFFF FROM rdb$database -- returns -1
Plage de valeurs hexadécimales
  • Nombres hexadécimaux dans la plage 0 . 7FFF FFFF sont des nombres positifs INTEGER avec les valeurs 0 . 2147483647. Pour interpréter une constante comme un nombre BIGINT, vous devez ajouter le nombre de zéros à gauche. Cela changera le type mais pas la valeur.

  • Numéros dans la plage 8000 0000 . FFFF FFFF nécessitent une attention particulière :

    • Lorsqu’ils sont écrits avec huit nombres hexadécimaux tels que 0x9E44F9A8, ils sont interprétés comme des entiers de 32 bits. Le bit le plus à gauche (le chiffre|la signature) étant activé, ces nombres se situent dans la plage négative -2147483648 . -1.

    • Les nombres précédés d’un ou plusieurs zéros, tels que 0x09E44F9A8, seront interprétés comme des BIGINT 64 bits dans la plage de valeurs 0000 0000 8000 0000 . 0000 0000 0000 FFFF FFFF. Dans ce cas, le bit de signature n’est pas activé, ils sont donc affichés dans la plage positive 2147483648 .. 4294967295 nombres décimaux.

    Ainsi, ce n’est que dans cet intervalle que les nombres précédés d’un zéro totalement insignifiant ont des valeurs radicalement différentes.Vous devez en être conscient.

  • Nombres hexadécimaux dans la plage 1 0000 0000 . 7FFF FFFF FFFF FFFF sont des nombres positifs `BIGINT'.

  • Nombres hexadécimaux dans la plage 8000 0000 0000 0000 0000 …​ FFFF FFFF FFFF FFFF sont des nombres `BIGINT' négatifs.

  • Les nombres de type SMALLINT ne peuvent pas être écrits en hexadécimal, à proprement parler, puisque même 0x1 est évalué comme INTEGER. Cependant, si vous écrivez un entier positif dans la plage de 16 bits allant de 0x0000 (zéro décimal) à 0x7FFF (32767 décimal), il sera converti en SMALLINT de manière transparente.

    Vous pouvez écrire un nombre SMALLINT négatif en hexadécimal en utilisant un nombre hexadécimal de 4 octets allant de 0xFFFF8000 (décimal -32768) à 0xFFFFFFFFFF (décimal -1).