Comment convertir une chaîne hexadécimale en texte lisible dans Sage X3 (Script 4GL)
2 minute read
🔍 Comment convertir une chaîne hexadécimale en texte lisible dans Sage X3
Dans le monde du développement autour de Sage X3, il arrive parfois qu'on manipule des chaînes hexadécimales. Dans cet article, je vous montre comment écrire une fonction simple en 4GL qui transforme une chaîne hexadécimale en texte lisible.
✅ Objectif
Convertir une chaîne comme :
3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e
En une chaîne lisible :
<?xml version="1.0" encoding="UTF-8"?>
🧠 La logique derrière
- Lire la chaîne hexadécimale 2 caractères à la fois
- Convertir chaque paire en code ASCII
- Assembler le résultat final
💡 Le code Sage X3
1. Subprog principal
Subprog hextotxt()
Local Char MYHEX(255), MYTEXT(255)
MYHEX = "3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e3c5075626c697368494d585f4d41545245435452414e5320786d6c6e733d22687474703a2f2f7777772e"
MYTEXT = Func HEXTOSTRING(MYHEX)
Infbox MYTEXT
End
2. Fonction HEXTOSTRING
Funprog HEXTOSTRING(HEXSTR)
Value Char HEXSTR()
Local Char RESULT(255)
Local Integer I, CHARCODE
Local Char HEXPAIR(2)
RESULT = ""
For I = 1 To len(HEXSTR) Step 2
HEXPAIR = mid$(HEXSTR, I, 2)
CHARCODE = func HEX2INT(HEXPAIR)
RESULT += chr$(CHARCODE)
Next I
End RESULT
3. Fonction HEX2INT
Funprog HEX2INT(HEXSTR)
Value Char HEXSTR()
Local Integer I, CODE, VALU, L
Local Char C(1)
VALU = 0
L = len(HEXSTR)
For I = 1 To L
C = toupper(mid$(HEXSTR, I, 1))
If C >= "0" And C <= "9"
CODE = ascii(C) - ascii("0")
ElsIf C >= "A" And C <= "F"
CODE = ascii(C) - ascii("A") + 10
Else
CODE = 0
Endif
VALU = VALU * 16 + CODE
Next I
End VALU
🔄 Résultat attendu
<?xml version="1.0" encoding="UTF-8"?><PublishIMX_MATRIXTRANS xmlns="http://www...
✍️ Conclusion
Ce type de fonction est très utile pour lire des données encodées en hex dans Sage X3. Elle peut être réutilisée dans vos traitements, écrans ou exports personnalisés.
📅 N'oubliez pas de me suivre pour plus d'astuces Sage X3 !