![]() |
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| High Level Programming Posez vos questions à propos de C, C + +, Java, SQL, et d'autres langages de programmation ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| Comment vérifier que ce fichier est un EBCDIC ou non | c_chaitanya | UNIX pour les nuls Questions et réponses | 0 | 04-03-2008 05:10 AM |
| ASCII en EBCDIC conversion à | er_ashu | De programmation et de script Shell | 1 | 02-01-2008 05:43 PM |
| Affichage de caractères EBCDIC | LouPelagalli | AIX | 1 | 08-09-2005 02:07 PM |
| Comparer les fichiers EBCDIC | RishiPahuja | De programmation et de script Shell | 2 | 07-08-2005 02:28 AM |
| Unix pour EBCDIC conversion | Bab00shka | UNIX pour les nuls Questions et réponses | 2 | 01-20-2005 12:58 PM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
Convertir HEX à EBCDIC EN C
Je veux convertir Hex valeur Pour EBCDIC valeur.
j'ai essayé de convertir de ascii hex et ensuite à EBCDIC, mais il ne donne pas les résultats escomptés. il ne donne pas de valeur correspondant EBCDIC lieu, il donne quelques junk valeurs. par exemple; Hex EBCDIC ----------------- 81 a 82 b 83 c 84 d 85 e 86 f 87 g 88 h 89 i Hex EBCDIC ----------------- A C1 C2 B C3 C C4 D C5 E C6 F C7 G C8 H C9 I code est le: //************************************************* ******************* # include <stdio.h> # include <string.h> # include <stdlib.h> # include <ctype.h> # include <time.h> static unsigned char a2e [256] \u003d ( 0, 1, 2, 3, 55, 45, 46, 47, 22, 5, 37, 11, 12, 13, 14, 15, 16, 17, 18, 19, 60, 61, 50, 38, 24, 25, 63, 39, 28, 29, 30, 31, 64, 79127123, 91108, 80125, 77, 93, 92, 78,107, 96, 75, 97, 240.241.242.243.244.245.246.247.248.249.122, 94, 76126110111, 124.193.194.195.196.197.198.199.200.201.209.210.211.212.213.214, 215.216.217.226.227.228.229.230.231.232.233, 74224, 90, 95109, 121.129.130.131.132.133.134.135.136.137.145.146.147.148.149.150, 151.152.153.162.163.164.165.166.167.168.169.192.106.208.161, 7, 32, 33, 34, 35, 36, 21, 6, 23, 40, 41, 42, 43, 44, 9, 10, 27, 48, 49, 26, 51, 52, 53, 54, 8, 56, 57, 58, 59, 4, 20, 62225, 65, 66, 67, 68, 69, 70, 71, 72, 73, 81, 82, 83, 84, 85, 86, 87, 88, 89, 98, 99.100.101.102.103.104.105.112.113.114.115.116.117, 118.119.120.128.138.139.140.141.142.143.144.154.155.156.157.158, 159.160.170.171.172.173.174.175.176.177.178.179.180.181.182.183, 184.185.186.187.188.189.190.191.202.203.204.205.206.207.218.219, 220.221.222.223.234.235.236.237.238.239.250.251.252.253.254.255 ); static unsigned char E2A [256] \u003d ( 0, 1, 2, 3156, 9.134.127.151.141.142, 11, 12, 13, 14, 15, 16, 17, 18, 19,157,133, 8135, 24, 25,146,143, 28, 29, 30, 31, 128.129.130.131.132, 10, 23, 27.136.137.138.139.140, 5, 6, 7, 144145, 22.147.148.149.150, 4.152.153.154.155, 20, 21,158, 26, 32.160.161.162.163.164.165.166.167.168, 91, 46, 60, 40, 43, 33, 38.169.170.171.172.173.174.175.176.177, 93, 36, 42, 41, 59, 94, 45, 47.178.179.180.181.182.183.184.185.124, 44, 37, 95, 62, 63, 186.187.188.189.190.191.192.193.194, 96, 58, 35, 64, 39, 61, 34, 195, 97, 98, 99.100.101.102.103.104.105.196.197.198.199.200.201, 202.106.107.108.109.110.111.112.113.114.203.204.205.206.207.208, 209.126.115.116.117.118.119.120.121.122.210.211.212.213.214.215, 216.217.218.219.220.221.222.223.224.225.226.227.228.229.230.231, 123, 65, 66, 67, 68, 69, 70, 71, 72, 73.232.233.234.235.236.237, 125, 74, 75, 76, 77, 78, 79, 80, 81, 82.238.239.240.241.242.243, 92159, 83, 84, 85, 86, 87, 88, 89, 90.244.245.246.247.248.249, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57.250.251.252.253.254.255 ); char ASCIItoEBCDIC (const unsigned char c) ( retour a2e [c]; ) char EBCDICtoASCII (const unsigned char c) ( retour E2A [c]; ) int main () ( char outarr [10]; int i \u003d 0, j \u003d 0; char hexval [10] \u003d "c1c2c3c4c5"; char newstrValue; char hexToAscii (premier char, char secondes) ( char hex [5], * stop; hex [0] \u003d'0 '; hex [1] \u003d 'x'; hex [2] \u003d premier; hex [3] \u003d seconde; hex [4] \u003d 0; retour strtol (hex, et l'arrêt, 16); ) for (i \u003d 0; i <10; i + +) ( outarr [j] \u003d hexToAscii (hexval [i], hexval [i + 1]); outarr [j] \u003d ASCIItoEBCDIC (outarr [j]); printf ( "la valeur est EBCDIC% c \ n", outarr); ) exit (0); ) //************************************************* ******************* aftre compilation i get résultat suivant. $>. / ebcdictoascii EBCDIC valeur est la suivante: EBCDIC valeur est la suivante: EBCDIC valeur est la suivante: EBCDIC valeur est la suivante: EBCDIC valeur est la suivante: EBCDIC valeur est la suivante: EBCDIC valeur est la suivante: EBCDIC valeur est la suivante: EBCDIC valeur est la suivante: EBCDIC valeur est la suivante: |
|
||||
|
J'ai même été surpris de votre code compilé.
Ici, il est avec plusieurs bugs corrigés: Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
static unsigned char a2e[256] = {
0, 1, 2, 3, 55, 45, 46, 47, 22, 5, 37, 11, 12, 13, 14, 15,
16, 17, 18, 19, 60, 61, 50, 38, 24, 25, 63, 39, 28, 29, 30, 31,
64, 79,127,123, 91,108, 80,125, 77, 93, 92, 78,107, 96, 75, 97,
240,241,242,243,244,245,246,247,248,249,122, 94, 76,126,110,111,
124,193,194,195,196,197,198,199,200,201,209,210,211,212,213,214,
215,216,217,226,227,228,229,230,231,232,233, 74,224, 90, 95,109,
121,129,130,131,132,133,134,135,136,137,145,146,147,148,149,150,
151,152,153,162,163,164,165,166,167,168,169,192,106,208,161, 7,
32, 33, 34, 35, 36, 21, 6, 23, 40, 41, 42, 43, 44, 9, 10, 27,
48, 49, 26, 51, 52, 53, 54, 8, 56, 57, 58, 59, 4, 20, 62,225,
65, 66, 67, 68, 69, 70, 71, 72, 73, 81, 82, 83, 84, 85, 86, 87,
88, 89, 98, 99,100,101,102,103,104,105,112,113,114,115,116,117,
118,119,120,128,138,139,140,141,142,143,144,154,155,156,157,158,
159,160,170,171,172,173,174,175,176,177,178,179,180,181,182,183,
184,185,186,187,188,189,190,191,202,203,204,205,206,207,218,219,
220,221,222,223,234,235,236,237,238,239,250,251,252,253,254,255
};
static unsigned char e2a[256] = {
0, 1, 2, 3,156, 9,134,127,151,141,142, 11, 12, 13, 14, 15,
16, 17, 18, 19,157,133, 8,135, 24, 25,146,143, 28, 29, 30, 31,
128,129,130,131,132, 10, 23, 27,136,137,138,139,140, 5, 6, 7,
144,145, 22,147,148,149,150, 4,152,153,154,155, 20, 21,158, 26,
32,160,161,162,163,164,165,166,167,168, 91, 46, 60, 40, 43, 33,
38,169,170,171,172,173,174,175,176,177, 93, 36, 42, 41, 59, 94,
45, 47,178,179,180,181,182,183,184,185,124, 44, 37, 95, 62, 63,
186,187,188,189,190,191,192,193,194, 96, 58, 35, 64, 39, 61, 34,
195, 97, 98, 99,100,101,102,103,104,105,196,197,198,199,200,201,
202,106,107,108,109,110,111,112,113,114,203,204,205,206,207,208,
209,126,115,116,117,118,119,120,121,122,210,211,212,213,214,215,
216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,
123, 65, 66, 67, 68, 69, 70, 71, 72, 73,232,233,234,235,236,237,
125, 74, 75, 76, 77, 78, 79, 80, 81, 82,238,239,240,241,242,243,
92,159, 83, 84, 85, 86, 87, 88, 89, 90,244,245,246,247,248,249,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,250,251,252,253,254,255
};
unsigned char ASCIItoEBCDIC(const unsigned char c)
{
return a2e[c];
}
unsigned char EBCDICtoASCII(const unsigned char c)
{
return e2a[c];
}
unsigned char hexToAscii(char first, char second)
{
char hex[5], *stop;
hex[0]='0';
hex[1]='x';
hex[2]=first;
hex[3]=second;
hex[4]=0;
return (unsigned char)strtol(hex, &stop, 16);
}
int main()
{
unsigned char outarr[10];
int i=0,j=0;
char hexval[10]="4041424344";
for (i=0; i<10 ;i+=2)
{
outarr[j]= hexToAscii(hexval[i], hexval[i + 1]);
printf("ascii value is %d %c\n",outarr[j], outarr[j]);
outarr[j]=ASCIItoEBCDIC(outarr[j]);
printf("ebcdic value is %d\n", outarr[j]);
}
exit(0);
}
|
|
||||
|
Re: pour jlliagre
J'ai même été surpris de votre code compilé.
Ici, il est avec plusieurs bugs corrigés: . . . . Merci de votre attention Mais pour char hexval [10] \u003d "c1c2c3c4c5"; J'attends EBCDIC valeurs en tant que: Un B C D E mais je veux en venir valeur ASCII est 193 Á EBCDIC valeur est de 119 ascii la valeur est de 194 Â EBCDIC valeur est de 120 ascii la valeur est de 195 Ã EBCDIC valeur est de 128 valeur ASCII est 196 Ä EBCDIC valeur est de 138 ascii la valeur est de 197 Å EBCDIC valeur 139 Comment puis-je obtenir les valeurs que ABCD E. ...... |
|
||||
|
pour char hexval [10] \u003d "c1c2c3c4c5";
J'attends EBCDIC valeurs en tant que: Un B C D E mais je veux en venir valeur ASCII est 193 Á EBCDIC valeur est de 119 ascii la valeur est de 194 Â EBCDIC valeur est de 120 ascii la valeur est de 195 Ã EBCDIC valeur est de 128 valeur ASCII est 196 Ä EBCDIC valeur est de 138 ascii la valeur est de 197 Å EBCDIC valeur 139 Comment puis-je obtenir les valeurs que ABCD E. ...... |
|
||||
|
Re: pour jlliagre
Pourquoi attendez-vous pour afficher 0xC1 A?
0xC1 dans "ASCII" (en fait, ISO-Latin1) est un. ********************************* l'équivalent de EBCDIC est 0xC1 A et j'ai l'impression non ASCII en EBCDIC équivalent équivalent i changé array static unsigned char a2e [256] \u003d ( 0, 1, 2, 3, 55, 45, 46, 47, 22, 5, 37, 11, 12, 13, 14, 15,16, 17, 18, 19, 60, 61, 50, 38, 24, 25, 63, 39, 28, 29, 30, 31,64, 79127123, 91108, 80125, 77, 93, 92, 78,107, 96, 75, 97,30,31, 32.243.244.245.246.247.248.249.122, 94, 76,126,110,111,32,193,194, 195,196,197,198,199,200,201,209,46,60,40,124,214,38,216,217,226, 227,228,229,230,231,232,33, 36,42, 41, 59,109,45,47,130,131,132,133, 134,135,136,137,145,44,37,95,62,63,151,152,153,162,163,164,165,166, 167,168,58,35,64,39,61, 34,32, 97, 98, 99, 100, 101, 102, 103, 104, 105, 1, 43, 44, 9, 10, 27,48, 106, 107, 108, 109, 110, 111, 112, 113, 114, 58, 59, 4, 20, 62,225,65, 66, 115, 116, 117, 118, 119, 120, 121, 122, 82, 83, 84, 85, 86, 87,88, 89, 98, 99,100,101,102,103,104,96,112,113,114,115,116,117,118,65,66, 67,68,69,70,71,72,73,144,154,155,156,157,158,159,74,75,76,77,78,79,80,81,82,178, 179,180,181,182,183,184,185,83,84,85,86,87,88,89,90,204,205,206,207,218,219,30, 31,32,33,34,35,36,37,38,39,250,251,252,253,254,255 ); et imprimé en caractère outarr Je reçois des valeurs correctes pour les alphabets mais pas pour les chiffres J'ai utilisé le tableau ci-après Décembre Hex ASCII Hex ASCII en EBCDIC décembre EBCDIC ----------------------- ---------------------- 0 0 NUL NUL 32 20 DS 1 1 SOH SOH 33 21! SOS 2 2 STX STX 34 22 "FS 3 3 ETX ETX 35 23 # WUS 4 4 EOT SEL BYP 36 24 $ / INP 5 5 ENQ HT 37 25% LF 6 6 ACK RNL 38 26 et ETB 7 7 BEL DEL 39 27 'ESC 8 8 GE BS 40 28 (SA 9 9 TAB SPS 41 29) SFE A 10 LF 42 2A * RPT SM / SW 11 B VT VT 43 2B CSP + C 12 FF FF 44 2C, MFA 13 D CR CR 45 2D - ENQ 14 E SO SO 46 2E. ACK 15 F SI SI 47 2F / BEL 16 10 DLE DLE 48 30 0 17 11 DC1 DC1 49 31 1 18 12 DC2 DC2 50 32 2 SYN 19 13 DC3 DC3 51 33 3 IR 20 14 DC4 RES / PEV 52 34 4 PP 21 15 NAK NL 53 35 5 TRN 22 16 SYN BS 54 36 6 NBS 23 17 ETB POC 55 37 7 EOT CAN 24 18 CAN 56 38 8 SBS 25 19 EM EM IT 57 39 9 26 1A SUB 58 UBS 3A: RFF 27 1B ESC CU1 59 3B; CU3 28 1C FS IFS 60 3C <DC4 29 1D GS IGS 61 3D \u003d NAK 30 1E RS IRS 62 3E> 31 1F US ITB / IUS 63 3F? SUB Décembre Hex ASCII Hex ASCII en EBCDIC décembre EBCDIC ------------------------ ------------------------ 64 40 @ 96 60 SP `_ 65 41 RER A 97 61 a / 66 42 B 98 62 b 67 43 C 99 63 c 68 44 D 100 64 d 69 45 E 101 65 e 70 46 F 102 66 f 71 47 G 103 67 g 72 48 H 104 68 h 73 49 I 105 69 i 74 4A J 106 6A j | 75 4B K. 107 6B k, 76 4C L <108 l 6C% 77 4D M (109 6D m _ 78 4E N + 110 6E n> 79 4F O | 111 6F o? 80 50 & P 112 70 p 81 51 Q 113 71 q 82 52 R 114 72 r 83 53 S 115 73 s 84 54 T 116 74 t 85 55 U 117 75 u 86 56 V 118 76 v 87 57 W 119 77 w 88 58 X 120 78 x 89 59 Y 121 79 y ` 90 5A Z! 122 7A z: 91 5B [$ (# 123 7B 92 5C \ * 124 7C | @ 93 5D]) 125 7D) ' 94 5E ^; 126 7E ~ \u003d 95 5F _ 127 7F DEL " Décembre Hex ASCII Hex ASCII en EBCDIC décembre EBCDIC ------------------------ ------------------------ 128 80 160 A0 129 81 A 161 A1 130 82 b 162 A2 s 131 83 c 163 t A3 132 84 d 164 u A4 133 85 e 165 A5 v 134 86 f 166 A6 w 135 87 g 167 x A7 136 88 h 168 A8 y 137 89 i 169 A9 z 138 8A 170 AA 139 8B (171 AB 140 8C AC 172 141 8D 173 AD [ 142 8E 174 AE 143 8F + 175 AF 144 90 176 B0 145 91 j 177 B1 146 92 k 178 B2 147 93 l 179 B3 148 94 m 180 B4 149 95 n 181 B5 150 96 o 182 B6 151 97 p 183 B7 152 98 q 184 B8 153 99 r 185 B9 154 9A 186 BA 155) 187 BB 9B 156 9C 188 BC 157 9D 189 BD 158 9E 190 BE 159 9F 191 BF Décembre Hex ASCII Hex ASCII en EBCDIC décembre EBCDIC ------------------------ ------------------------ 192 C0 224 E0 193 C1 A 225 E1 194 C2 B 226 S E2 195 C3 C 227 T E3 196 C4 D 228 U E4 197 C5 E 229 E5 V C6 F 198 W 230 E6 C7 G 199 X 231 E7 200 C8 H 232 E8 Y 201 C9 I 233 E9 Z 202 CA 234 CC 203 CB 235 EB 204 CC 236 CE 205 CD 237 ED 206 CE 238 EE 207 FC 239 EF 208 D0 240 F0 0 209 D1 J 241 F1 1 210 D2 K 242 F2 2 211 D3 L 243 F3 3 212 D4 M 244 F4 4 213 D5 N 245 F5 5 214 D6 O 246 F6 6 215 D7 P 247 F7 7 216 D8 Q 248 F8 8 217 D9 R 249 F9 9 218 DA 250 FA 219 DB 251 FB 220 DC 252 FC 221 DD 253 FD 222 DE 254 FE 223 DF 255 FF Pour 0xC1 EBCDIC valeur est une donc à la position 193 de la série ont mis la valeur i \u003d 65 0x65 comme en ASCII est un il travaille pour des alphabets Dernière édition par junaid.nehvi; au 11.25.2008 10:02 AM.. |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|