WriteHexString | |
ldci | 27-Feb-2010/18:22:05+1:00 |
Qui aurait la bonne idée pour faire avec Rebol? J'ai oublié le basic... Public Function WriteHexString(cHS As String, ByVal cFN As Long) 'Place une chaine hexadécimale dans le fichier Dim I As Long Dim C As String For I = 1 To Len(cHS) Step 2 C = Mid$(cHS, I, 2) Put #cFN, , Chr$(Val("&H" & C)) Next End Function | |
ldci | 28-Feb-2010/19:35:29+1:00 |
Bon pas grand monde sur le forum ... Voici la solution WriteHexString: func [ str file][ lg: to-integer length? str for i 1 lg 2 [a: pick str i b: pick str i + 1 write/append file to-char to-integer to-issue join a b ] ] L'astuce est dans l'utilisation de to-issue qui est un type Rebol très utile. A + | |
guest2 | 3-Mar-2010/8:09:52+1:00 |
Heu normalement write/binary est suffisant. >> write/binary %xxxx "azerty" >> read/binary %xxxx == #{617A65727479} >> read %xxxx == "azerty" | |
ldci | 3-Mar-2010/12:10:50+1:00 |
Salut Guest2 Tu as tout à fait raison. En fait j'avais besoin de passer des chaines du type str: "011500030000000100030000". En d'autre termes, elles sont déjà en binaire par conséquent un write/binary crée des valeurs qui sont traitées comme aberrantes quand on relit les octets par un read/binary exemple >> #{303131353030303330303030303030313030303330303030} alors que le programme de lecture attend en fait "011500030000000100030000" . (Voir le code de TiffLib.r). Merci en tout cas pour l'astuce. A + | |
guest2 | 3-Mar-2010/18:48:39+1:00 |
Ok j'ai compris ce que tu veux. tu as une chaine "01020304" qui est déjà en représentation hexa. donc tu veux obtenir: #{01020304} Pas besoin de boucle, le fonction debase est ton amie. >> debase/base "010203" 16 == #{010203} | |
ldci | 4-Mar-2010/8:58:51+1:00 |
Salut Guest2 Tu es le meilleur! et Rebol est toujours aussi génial. | |
Login required to Post. |