Bonjour,
Les adresses IPs sont stockées en hexa sur la base postgreSQL si je veux faire une recherche sur une ardresse IP comment procéder la conversion IP décimale en hexa.
Merci
Bonjour,
Les adresses IPs sont stockées en hexa sur la base postgreSQL si je veux faire une recherche sur une ardresse IP comment procéder la conversion IP décimale en hexa.
Merci
Une adresse IP est juste un entier 32 bits non signé. le convertir en hexadécimal est donc ultra simple !
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Bonjour,
Merci de votre réponse. J'ai effectué le test suivant qui renvoie bien de l'hexa
# select to_hex(10);
to_hex
--------
a
(1 row)
Comment procède t'on pour une adresse IP?
# select to_hex(192.168.1.1);
ERROR: syntax error at or near ".1"
LINE 1: select to_hex(192.168.1.1);
Il semble que le "." ne fonctionne pas en séparateur, ni l'espace ou la virgule.
Cdt.
Bonjour,
Il faut convertir chaque octet en hexa, puis "concaténer" le tout:
192 => C0
168 => A8
1 => 01
Donc 192.168.1.1, ça donne en hexa C0A80101.
Tu peux aussi commencer par trouver l'écriture décimale de l'adresse (ici (192*256^3) + (168*256^2) + (1 * 256) + (1) = 3232235777), et la convertir en hexa.
Tatayo.
Bonjour,
Merci du retour très rapide. Faire des conversions une à une de chaque octet me parait fastidieux.
Je pense qu'une fonction à été prévue à cet effet je vais continuer à chercher.
Merci.
Fonction ip2hex
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE OR REPLACE FUNCTION ip2hex( ip char(15) ) returns char(15) IMMUTABLE LANGUAGE 'plpgsql' AS $BODY$ DECLARE a integer[]; DECLARE b bigint; BEGIN a = string_to_array(ip, '.'); b = a[1]*256^3 + a[2]*256^2 + a[3]*256 + a[4]; return UPPER(to_hex(b)); END; $BODY$;
Test
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT ip2hex( '192.168.1.1' );
Merci pour la fonction. Je vais essayer de m'en servir. Je ne suis pas parvenue à trouver mieux.
Bien cordialement
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager