Bonjour,
J'aimerais convertir un champs qui est en hexadecimal en string je suis sur une base MySQL.
J'ai utilisé la fonction UNHEX qui permet d'effectuer une conversion cependant elle me renvoit une valeur NULL.
Avez-vous une idée ?
Version imprimable
Bonjour,
J'aimerais convertir un champs qui est en hexadecimal en string je suis sur une base MySQL.
J'ai utilisé la fonction UNHEX qui permet d'effectuer une conversion cependant elle me renvoit une valeur NULL.
Avez-vous une idée ?
Hello !
Pour convertir en hexadécimal c'est la fonction HEX() qu'il faut utiliser ;)
Mon champs est en hexadecimal et je voudrais le convertir en string
autant pour moi, je ne suis pas réveillé, j'ai mal lu ! :D
est ce que tu pourrais nous mettre un exemple de valeur que tu passes dans la fonction UNHEX et qui te retourne NULL ?
Tu peux trouver ci-joint deux exemples de rêquetes effectuer.
De mon coté quand j'exécutePHPMyAdmin me renvoi "52e9616c69736174696f6e206465206465757820736f6c7574696f6e7320706172206d6f697320"Code:select UNHEX ('52e9616c69736174696f6e206465206465757820736f6c7574696f6e7320706172206d6f697320')
alors que si je l'exécute directement sur le serveur ça me retourne "Réalisation de deux solutions par mois"
donc peut être que le problème vient de PHPMyAdmin
Pour les null, en revanche, c'est autre chose, à priori la fonction renvoie null quand la chaine n'est pas une chaine hexadécimale, si tu pouvais nous montré le résultat de cette requête qu'on puisse vérifier :
Met le résultat en texte et non en image comme ça je peux faire des tests de mon côté directement en copiant collant les valeurs ;)Code:SELECT Objectif_2, UNHEX(Objectif_2) FROM t_eae_backup
Voici mon résultat de requete
Objectif_2 UNHEX(Objectif_2)
UulhbGlzYXRpb24gZGUgZGV1eCBzb2x1dGlvbnMgcGFyIG1vaXMg NULL
UulhbGlzYXRpb24gZGUgZGV1eCBzb2x1dGlvbnMgcGFyIG1vaXMu NULL
UulhbGlzYXRpb24gZGUgZGV1eCBzb2x1dGlvbnMgcGFyIG1vaXMu NULL
UmVhbGlzZXIgMTAwICUgZHUgQ0EgSVAgREUgbGEgQkFG NULL
UmVhbGlzZXIgMTAwICUgZHUgQ0EgSVAgREUgbGEgQkFG NULL
Pour explication,
Mon champs est encoder Objectif_2 est encodé en Base64, en utilisant la fonction FROM_BASE64, la requete me renvoi mon champs encodé en Hexadecimal.
Du coup j'essaye de faire une requête qui pourrait décoder en Base64 puis en Hexadecimal.
Merci pour ton aide
tu passes une chaine de caractère ("UulhbGlzYXRpb24gZGUgZGV1eCBzb2x1dGlvbnMgcGFyIG1vaXMg") qui n'est pas héxadecimal dans la fonction UNHEX d'ou le resultat : null
et si je fait unca me renvoi bien "R�alisation de deux solutions par mois"Code:select FROM_BASE64('UulhbGlzYXRpb24gZGUgZGV1eCBzb2x1dGlvbnMgcGFyIG1vaXMg')
normalement coté applicatif un simple "FROM_BASE64" devrait suffire, je ne sais pas pourquoi phpmyadmin affiche une valeur hexadecimal..
Salut balanciaga.
Voici un exemple :Citation:
Envoyé par balanciaga
Maintenant, si ta chaine n'est pas dans un format hexadécimale, tu ne pourras pas avec la fonction 'unhex' obtenir le message en clair.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 -------------- select hex('conversion en hexadécimal') as HEX -------------- +----------------------------------------------------+ | HEX | +----------------------------------------------------+ | 636F6E76657273696F6E20656E206865786164E963696D616C | +----------------------------------------------------+ -------------- select unhex('636F6E76657273696F6E20656E206865786164E963696D616C') as chaine -------------- +---------------------------+ | chaine | +---------------------------+ | conversion en hexadécimal | +---------------------------+ -------------- select hex('converion en chaine de caractères') as HEX -------------- +--------------------------------------------------------------------+ | HEX | +--------------------------------------------------------------------+ | 636F6E766572696F6E20656E20636861696E6520646520636172616374E8726573 | +--------------------------------------------------------------------+ -------------- select unhex('636F6E766572696F6E20656E20636861696E6520646520636172616374E8726573') as chaine -------------- +-----------------------------------+ | chaine | +-----------------------------------+ | converion en chaine de caractères | +-----------------------------------+ Appuyez sur une touche pour continuer...
Tu parles dans ton dernier message du conversion avec 'to_base64'.
Voici un autre exemple :
Et tu remarques que la conversion n'est pas au format hexadécimale.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 -------------- select to_base64('conversion en hexadécimal') as HEX -------------- +--------------------------------------+ | HEX | +--------------------------------------+ | Y29udmVyc2lvbiBlbiBoZXhhZOljaW1hbA== | +--------------------------------------+ -------------- select from_base64('Y29udmVyc2lvbiBlbiBoZXhhZOljaW1hbA==') as chaine -------------- +---------------------------+ | chaine | +---------------------------+ | conversion en hexadécimal | +---------------------------+ -------------- select to_base64('converion en chaine de caractères') as HEX -------------- +----------------------------------------------+ | HEX | +----------------------------------------------+ | Y29udmVyaW9uIGVuIGNoYWluZSBkZSBjYXJhY3TocmVz | +----------------------------------------------+ -------------- select from_base64('Y29udmVyaW9uIGVuIGNoYWluZSBkZSBjYXJhY3TocmVz') as chaine -------------- +-----------------------------------+ | chaine | +-----------------------------------+ | converion en chaine de caractères | +-----------------------------------+ Appuyez sur une touche pour continuer...
@+