The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Alto Nível de programação
.
google unix.com



Alto Nível de programação Post perguntas sobre C, C + +, Java, SQL, e outras linguagens de programação aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Como verificar meteorológicas é um arquivo EBCDIC ou não c_chaitanya UNIX para Dummies Perguntas & Respostas 0 04-03-2008 06:10
ASCII para EBCDIC conversão er_ashu Programação Shell Script e 1 02-01-2008 05:43
Mostrar como EBCDIC Personagens LouPelagalli AIX 1 08-09-2005 03:07
Comparando arquivos EBCDIC RishiPahuja Programação Shell Script e 2 07-08-2005 03:28
Unix para EBCDIC conversão Bab00shka UNIX para Dummies Perguntas & Respostas 2 01-20-2005 12:58

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 11-24-2008
junaid.nehvi junaid.nehvi is offline
Usuário
  
 

Join Date: Aug 2008
Lugares: 19
Converter HEX para EBCDIC EM C

Quero converter hex valor Para EBCDIC valor.
Tentei converter hex para ascii e depois para EBCDIC mas não dão os resultados desejados.

não dá valor correspondente EBCDIC vez que dá algum lixo valores.
por exemplo;
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
E C5
C6 F
C7 G
C8 H
C9 I


código é como:
//************************************************* *******************
# 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, 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] \u003d (
0, 1, 2, 3156, 9.134.127.151.141.142, 11, 12, 13, 14, 15,
16, 17, 18, 19157133, 8135, 24, 25146143, 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
);
char ASCIItoEBCDIC (const unsigned char c)
(
retorno a2e [c];
)
char EBCDICtoASCII (const unsigned char c)
(
retorno e2a [c];
)
int main ()
(
char outarr [10];
int i \u003d 0, j \u003d 0;
char hexval [10] \u003d "c1c2c3c4c5";
char newstrValue;
char hexToAscii (char primeiro, segundo char)
(
char hex [5], * parar;
hex [0] \u003d'0 ';
hex [1] \u003d 'x';
hex [2] \u003d primeira;
hex [3] \u003d segunda;
hex [4] \u003d 0;
retorno strtol (hex, & stop, 16);
)
for (i \u003d 0; i <10; i + +)
(
outarr [j] \u003d hexToAscii (hexval [i], hexval [i + 1]);

outarr [j] \u003d ASCIItoEBCDIC (outarr [j]);
printf ( "EBCDIC valor é% c \ n", outarr);
)

exit (0);
)
//************************************************* *******************

aftre compilação i get seguinte resultado.

$>. / ebcdictoascii
EBCDIC valor é:
EBCDIC valor é:
EBCDIC valor é:
EBCDIC valor é:
EBCDIC valor é:
EBCDIC valor é:
EBCDIC valor é:
EBCDIC valor é:
EBCDIC valor é:
EBCDIC valor é:
  #2 (permalink)  
Old 11-24-2008
jlliagre jlliagre is offline Forum Advisor  
sıɹɐlosuǝdo ɹǝsn
  
 

Join Data: dezembro 2007
Localização: Paris
Mensagens: 1.453
Fiquei mesmo surpreendido seu código compilado.

Aqui está com vários bugs corrigidos:
Código:
#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);
}
  #3 (permalink)  
Old 11-25-2008
junaid.nehvi junaid.nehvi is offline
Usuário
  
 

Join Date: Aug 2008
Lugares: 19
Re: a jlliagre

Fiquei mesmo surpreendido seu código compilado.

Aqui está com vários bugs corrigidos:
.
.
.
.
obrigado pela vossa atenção
Mas para
char hexval [10] \u003d "c1c2c3c4c5";
Estou esperando EBCDIC valores como:
A
B
C
D
E
mas estou ficando
ascii valor é 193 Á
EBCDIC valor é 119
ascii valor é 194 Â
EBCDIC valor é de 120
ascii valor é 195 A
EBCDIC valor é de 128
ascii valor é 196 a
EBCDIC valor é 138
ascii valor é 197 Å
EBCDIC valor é 139



Como posso obter os valores como ABCD E. ......
  #4 (permalink)  
Old 11-25-2008
junaid.nehvi junaid.nehvi is offline
Usuário
  
 

Join Date: Aug 2008
Lugares: 19
para char hexval [10] \u003d "c1c2c3c4c5";
Estou esperando EBCDIC valores como:
A
B
C
D
E
mas estou ficando
ascii valor é 193 Á
EBCDIC valor é 119
ascii valor é 194 Â
EBCDIC valor é de 120
ascii valor é 195 A
EBCDIC valor é de 128
ascii valor é 196 a
EBCDIC valor é 138
ascii valor é 197 Å
EBCDIC valor é 139



Como posso obter os valores como ABCD E. ......
  #5 (permalink)  
Old 11-25-2008
jlliagre jlliagre is offline Forum Advisor  
sıɹɐlosuǝdo ɹǝsn
  
 

Join Data: dezembro 2007
Localização: Paris
Mensagens: 1.453
Por que você está esperando para mostrar 0xC1 A?
0xC1 em "ASCII" (na verdade iso-latin1) é uma.
  #6 (permalink)  
Old 11-25-2008
junaid.nehvi junaid.nehvi is offline
Usuário
  
 

Join Date: Aug 2008
Lugares: 19
Re: a jlliagre

Por que você está esperando para mostrar 0xC1 A?
0xC1 em "ASCII" (na verdade iso-latin1) é uma.
*********************************
o EBCDIC 0xc1 é equivalente a um
e eu tenho a impressão equivalente EBCDIC Não Ascii equivalente


Mudei seguinte matriz
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, 91.108, 80.125, 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
);


e impressos outarr como personagem
Estou recebendo valores corretos para alfabetos
mas não para numerais
Eu tenho usado seguinte tabela

Dez Hex ASCII EBCDIC dez Hex ASCII 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 & ETB
7 7 BEL DEL 39 27 »CES
8 8 BS GE 40 28 (SA
9 9 TAB SPS 41 29) SFE
10 A LF RPT 42 2A * SM / PB
11 B VT 43 VT 2B + CSP
12 C FF FF 44 2C, AMF
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
NL 21 15 NAK 53 35 5 TRN
SYN 22 16 BS 54 36 6 NBS
23 17 ETB POC 55 37 7 EOT
24 18 CAN CAN 56 38 8 SBS
25 19 EM 57 EM 39 9 TI
26 1A SUB UBS 58 3A: RFF
27 1B ESC CU1 59 3B; CU3
28 1C FS IFS 60 3C <DC4
29 1D GS 61 IGS 3D \u003d NAK
30 1E RS IRS 62 3E>
31 1F E.U. ITB / IUS 63 3F? SUB

Dez Hex ASCII EBCDIC dez Hex ASCII EBCDIC
------------------------ ------------------------
64 40 SP 96 60 `@ _
A 65 41 RSP 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 6C l%
77 4D M (109 6D m _
78 4E N + 110 6E n>
79 4F O | 111 6F o?
80 50 P & P 112 70
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 x 78
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 "

Dez Hex ASCII EBCDIC dez Hex ASCII EBCDIC
------------------------ ------------------------
128 80 160 A0
129 81 a 161 A1
130 82 b 162 A2 s
131 83 C 163 A3 t
132 84 d 164 A4 u
133 85 e 165 A5 v
134 86 f 166 A6 w
135 x 87 g 167 A7
136 88 h 168 A8 y
137 89 i 169 A9 z
138 8A 170 AA
139 8B (171 AB
140 8C 172 AC
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 ° 182 B6
151 97 p 183 B7
152 98 q 184 B8
153 99 r 185 B9
154 9A BA 186
155 9B) BB 187
156 9C 188 aC
157 9D 189 BD
158 9E 190 BE
159 9F 191 BF

Dez Hex ASCII EBCDIC dez Hex ASCII EBCDIC
------------------------ ------------------------
192 C0 224 E0
193 C1 A 225 E1
194 C2 B 226 S E2
195 C3 C 227 E3 T
196 C4 D 228 E4 U
197 C5 E 229 V E5
198 C6 F 230 E6 W
C7 G 199 X 231 E7
200 C8 H 232 E8 Y
201 C9 I 233 E9 Z
202 CA 234 EA
203 CB 235 EB
204 CC 236 CE
205 CD 237 ED
206 CE 238 EE
207 CF 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 P 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 PO 251 FB
220 CC 252 FC
221 DD 253 FD
222 DE 254 FE
223 DF 255 FF
Para 0XC1 EBCDIC valor é um
por conseguinte, na posição 193 do array i puseram valor \u003d 65
como 0X65 em ascii é A


ele funciona para alfabetos

Última edição por junaid.nehvi; em 11/25/2008 10:02..
  #7 (permalink)  
Old 11-25-2008
jlliagre jlliagre is offline Forum Advisor  
sıɹɐlosuǝdo ɹǝsn
  
 

Join Data: dezembro 2007
Localização: Paris
Mensagens: 1.453
Seu código está usando 0xC1 como um valor ASCII, e não um EBCDIC um.
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 01:35.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0