2010-12-08 6 views

Répondre

4

Here's an implementation (par Skeet) @ Jon pourraient vous être utiles.

+0

Merci beaucoup ... Je vais à travers le lien. Je vais vous dire si ça m'aide .. –

1

Essayez comme ci-dessous le code

public string ConvertASCIItoEBCDIC(string strASCIIString) 
{ 
int[] a2e = new int[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 
}; 

char chrItem = Convert.ToChar("0"); 
StringBuilder sb = new StringBuilder(); 
for (int i = 0; i < strASCIIString.Length; i++) 
{ 
    try 
    { 
     chrItem = Convert.ToChar(strASCIIString.Substring(i, 1)); 
     sb.Append(Convert.ToChar(a2e[(int)chrItem])); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
     return string.Empty; 
    } 
} 
string result = sb.ToString(); 
sb = null; 
return result; 
} 

et vérifier le code saple sur ces liens

http://kseesharp.blogspot.com/2007/12/convert-ascii-to-ebcdic.html

http://forums.asp.net/t/167516.aspx

http://www.yoda.arachsys.com/csharp/ebcdic/

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/c2b074fd-4293-4bf4-b7fa-1803fc625d43

1

J'ai essayé le code ci-dessus, et j'ai trouvé que cela ne fonctionnait pas pour moi.

Par exemple, '04' (0x3034) ascii traduit en 0x00f000f4 ebcdic. Le problème semblait être l'encodage. Joué avec plusieurs approches pour changer cela, mais finalement trouvé la meilleure solution était la plus élémentaire. Au lieu d'utiliser Convert.ToChar, j'ai branché la valeur hexadécimale dans le tableau.

S'il vous plaît voir ci-dessous:

static byte[] ASCIItoEBCDIC(string asciiString) 
{ 
    byte[] asciiToEbcdicTable = new byte[256] { 
     0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x25,0x0B,0x0C,0x0D,0x0E,0x0F, 
     0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F, 
     0x40,0x5A,0x7F,0x7B,0x5B,0x6C,0x50,0x7D,0x4D,0x5D,0x5C,0x4E,0x6B,0x60,0x4B,0x61, 
     0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0x7A,0x5E,0x4C,0x7E,0x6E,0x6F, 
     0x7C,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6, 
     0xD7,0xD8,0xD9,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xBA,0xE0,0xBB,0xB0,0x6D, 
     0x79,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96, 
     0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xC0,0x4F,0xD0,0xA1,0x07, 
     0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B, 
     0x30,0x31,0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF, 
     0x41,0xAA,0x4A,0xB1,0x9F,0xB2,0x6A,0xB5,0xBD,0xB4,0x9A,0x8A,0x5F,0xCA,0xAF,0xBC, 
     0x90,0x8F,0xEA,0xFA,0xBE,0xA0,0xB6,0xB3,0x9D,0xDA,0x9B,0x8B,0xB7,0xB8,0xB9,0xAB, 
     0x64,0x65,0x62,0x66,0x63,0x67,0x9E,0x68,0x74,0x71,0x72,0x73,0x78,0x75,0x76,0x77, 
     0xAC,0x69,0xED,0xEE,0xEB,0xEF,0xEC,0xBF,0x80,0xFD,0xFE,0xFB,0xFC,0xAD,0xAE,0x59, 
     0x44,0x45,0x42,0x46,0x43,0x47,0x9C,0x48,0x54,0x51,0x52,0x53,0x58,0x55,0x56,0x57, 
     0x8C,0x49,0xCD,0xCE,0xCB,0xCF,0xCC,0xE1,0x70,0xDD,0xDE,0xDB,0xDC,0x8D,0x8E,0xDF}; 

    byte[] ebcdicBinary = new byte[asciiString.Length]; 
    for (int pos = 0; pos < asciiString.Length; ++pos) 
    { 
     int ebcdicIndex = asciiString[pos]; 
     ebcdicBinary[pos] = asciiToEbcdicTable[ebcdicIndex]; 
    } 
    return ebcdicBinary; 
} 
Questions connexes