我使用此链接阅读了有关将ASCII转换为EBCDIC的;
在Java中将字符串从ASCII转换为EBCDIC?

但这在爪哇。我的要求是在c#.net中。

那你能帮我吗?

感谢和问候,
克里希纳·库马尔(Krishna Kumar)

有帮助吗?

解决方案

这是一个实现 (由@Jon Skeet)您可能会发现有用。

其他提示

我尝试了上述代码,发现它对我不起作用。

例如,“ 04”(0x3034)ASCII转换为0x00f000f4 EBCDIC。问题似乎是编码。

玩了几个方法来改变这一点,但最终发现最好的解决方案是最基本的。我没有使用convert.tochar,而是将十六进制值插入数组中。

请参阅以下内容:

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;
}

尝试以下代码

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;
}

并在这些链接上检查SAPLE代码

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/c2b0744fd-4293-4bf4bf4-b7fa-1803fc625d43

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top