2009-12-25 5 views
1

J'ai une chaîne 'RAJA' qui devrait être écrite dans un fichier sous forme de données HEX. Voici des exemples de codes qui m'aident à décrire le problème. Le cas (a)Comment écrire une chaîne HEX dans un fichier comme HEX en utilisant REXX

name = 'RAJA' 
name = C2X(name) /* Hex value = '52414A41' */ 
QUEUE name. 

sortie du fichier: 52414A41

Mais si nous utilisons les données HEX directement à écrire dans le fichier, il fonctionne très bien cas (b)

name = '52414A41'X 
QUEUE name. 

Sortie au fichier: RAJA

Issue: Dans le cas (a) lorsque la chaîne a été convertie en HEX en utilisant C2X, elle retourne une chaîne de données HEX et non une donnée HEX. Mais dans le cas (b) que les données HEX ont été écrites dans le fichier. Ma question est de savoir comment laisser l'interprète REXX savoir que la variable 'nom' dans le cas (a) a des données HEX et doit être écrite comme HEX. J'espère avoir clarifié la question. Lemme marcher vers une solution.

+0

Je ne vois pas comment 'FRFAFJFA' est hexadécimal? Le système hexadécimal n'a pas 'R' ou' J'! – Aziz

+0

'FRFAFJFA' est la forme HEX d'une chaîne 'RAJA'. Seule la représentation HEX décimale aura des valeurs de 0-9, a-f, A-F uniquement. Il y a une différence entre la conversion d'une chaîne/décimal en HEX.L'espoir vous a fait clair. –

+0

dans le cas (a), 'C2X (nom)' vous donne '52414A41', pas' FRFAFJFA'. Je ne comprends toujours pas comment tu as eu ça. – Aziz

Répondre

0

Enfin, je pourrais résoudre le problème MYSELF décrit en haut. Il y a une fonction intégrée dans REXX appelée 'INTERPRET', qui nous aide à construire des commandes REXX dynamiques. Voici la déclaration unique, m'a fait exécuter le module avec succès:

INTERPRET name_hex "= '" || name || "'X" 

Il crée dynamiquement une déclaration REXX:

name_hex = 'name'X 

qui dira interprète REXX la chaîne en « nom » en tant que données HEX.

Awesome right! Je vous espère clairement fait .. Ne revenir à moi avec vos questions ..

2

Vous pouvez également utiliser la fonction X2C

disent X2C (52414A41)

affiche RAJA

Pour la plupart des les fonctions comme C2X inversant les caractères fait l'inverse

ie

dire D2C (C2D (10))

disent C2D (D2C (10))

disent X2D (D2X (10))

Affichage 10

0

Je ne pense pas que vous avez une bonne compréhension de ce que vous essayez de Faites ici ... Exécutez le programme REXX suivant, puis découvrez pourquoi il affiche ce qu'il fait. Une fois que vous avez réussi cela, vous pouvez probablement trouver une meilleure solution à votre problème hex/personnage.


name = 'RAJA' 
say name   /* RAJA */ 
name = C2X(name) 
say name   /* 52414A41 */ 
name = X2C(name) 
say name   /* RAJA */ 
name = '52414A41'x 
say name   /* RAJA */ 
name = X2C('52414A41') 
say name   /* RAJA */ 
name = '52414A41' 
INTERPRET "name = '" || name || "'X" 
say name   /* RAJA */ 
+0

NealB, vous pourriez penser que la variable 'name' a la même valeur à chaque étape. Mais chaque fois que le type de données change. C2X donne une chaîne HEX, mais pas la valeur HEX. Mon problème était d'écrire cette chaîne HEX dans un fichier en tant que valeur HEX. Je sais que c'est déroutant. Ecrire la chaîne '52414A41' est différent de l'écriture '52414A41'X. Pour une meilleure compréhension, utilisez une donnée numérique comme exemple. –

+0

Citation du manuel REXX: ** Une chaîne hexadécimale n'est pas une représentation d'un nombre. C'est un mécanisme d'échappement qui permet à un utilisateur de décrire un caractère en termes d'encodage **, donc bien sûr '52414A41' et '52414A41'x sont différents! Je ne pense pas avoir compris ou compris ce que vous entendez vraiment par "chaîne HEX" vs "valeur HEX". Appelons ça un jour et passons à autre chose. – NealB