Comment convertir une chaîne hexadécimale en texte lisible dans Sage X3 (Script 4GL)

Convertir une Chaîne Hexadécimale en Texte dans Sage X3
Hex to Text in Sage X3

🔍 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 !