修改自这里,原来的程序是Python写的
AsciiToEbcdicUtil.java
001 public class AsciiToEbcdicUtil {
002
003 private static int[] a2eG = {
004 0, 1, 2, 3, 55, 45, 46, 47, 22, 5, 37, 11, 12, 13, 14, 15,
005 16, 17, 18, 19, 60, 61, 50, 38, 24, 25, 63, 39, 28, 29, 30, 31,
006 64, 79,127,123, 91,108, 80,125, 77, 93, 92, 78,107, 96, 75, 97,
007 240,241,242,243,244,245,246,247,248,249,122, 94, 76,126,110,111,
008 124,193,194,195,196,197,198,199,200,201,209,210,211,212,213,214,
009 215,216,217,226,227,228,229,230,231,232,233, 74,224, 90, 95,109,
010 121,129,130,131,132,133,134,135,136,137,145,146,147,148,149,150,
011 151,152,153,162,163,164,165,166,167,168,169,192,106,208,161, 7,
012 32, 33, 34, 35, 36, 21, 6, 23, 40, 41, 42, 43, 44, 9, 10, 27,
013 48, 49, 26, 51, 52, 53, 54, 8, 56, 57, 58, 59, 4, 20, 62,225,
014 65, 66, 67, 68, 69, 70, 71, 72, 73, 81, 82, 83, 84, 85, 86, 87,
015 88, 89, 98, 99,100,101,102,103,104,105,112,113,114,115,116,117,
016 118,119,120,128,138,139,140,141,142,143,144,154,155,156,157,158,
017 159,160,170,171,172,173,174,175,176,177,178,179,180,181,182,183,
018 184,185,186,187,188,189,190,191,202,203,204,205,206,207,218,219,
019 220,221,222,223,234,235,236,237,238,239,250,251,252,253,254,255
020 };
021
022 private static int[] e2aG = {
023 0, 1, 2, 3,156, 9,134,127,151,141,142, 11, 12, 13, 14, 15,
024 16, 17, 18, 19,157,133, 8,135, 24, 25,146,143, 28, 29, 30, 31,
025 128,129,130,131,132, 10, 23, 27,136,137,138,139,140, 5, 6, 7,
026 144,145, 22,147,148,149,150, 4,152,153,154,155, 20, 21,158, 26,
027 32,160,161,162,163,164,165,166,167,168, 91, 46, 60, 40, 43, 33,
028 38,169,170,171,172,173,174,175,176,177, 93, 36, 42, 41, 59, 94,
029 45, 47,178,179,180,181,182,183,184,185,124, 44, 37, 95, 62, 63,
030 186,187,188,189,190,191,192,193,194, 96, 58, 35, 64, 39, 61, 34,
031 195, 97, 98, 99,100,101,102,103,104,105,196,197,198,199,200,201,
032 202,106,107,108,109,110,111,112,113,114,203,204,205,206,207,208,
033 209,126,115,116,117,118,119,120,121,122,210,211,212,213,214,215,
034 216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,
035 123, 65, 66, 67, 68, 69, 70, 71, 72, 73,232,233,234,235,236,237,
036 125, 74, 75, 76, 77, 78, 79, 80, 81, 82,238,239,240,241,242,243,
037 92,159, 83, 84, 85, 86, 87, 88, 89, 90,244,245,246,247,248,249,
038 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,250,251,252,253,254,255
039 };
040
041 public static String AsciiToEbcdic(String str) {
042 if (str.length() == 0) {
043 return str;
044 }
045 else {
046 StringBuffer result = new StringBuffer();
047 for (int i = 0; i < str.length(); i++) {
048 result.append((char)a2eG[(int)str.charAt(i)]);
049 }
050 return result.toString();
051 }
052 }
053
054 public static String EbcdidToAscii(String str) {
055 if (str.length() == 0) {
056 return str;
057 }
058 else {
059 StringBuffer result = new StringBuffer();
060 for (int i = 0; i < str.length(); i++) {
061 result.append((char)e2aG[(int)str.charAt(i)]);
062 }
063 return result.toString();
064 }
065 }
066 }
测试 TestAsciiToEbcdicUtil.java
001 import junit.framework.TestCase;
002
003 public class TestAsciiToEbcdicUtil extends TestCase {
004
005 public void testConversions() {
006 String str = "The dog jumped over the lazy brown fox in 1.234567890 seconds.";
007 assertEquals(str, AsciiToEbcdicUtil.EbcdidToAscii(
008 AsciiToEbcdicUtil.AsciiToEbcdic(str)));
009 }
010
011 public static void main(String[] args) {
012 junit.swingui.TestRunner.run(TestAsciiToEbcdicUtil.class);
013 }
014
015 } |