JAVA实现ASCII码与EBCDIC码的相互转换 (九)

2014-11-24 07:29:07 · 作者: · 浏览: 14
,
/*208*/ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
/*224*/ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
/*240*/ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63
};

/**
* EBCDIC->ASCII转换表
*/
private static byte[] EToA={
/*0 */ 0, 1, 2, 3, 26, 9, 26, 127, 26, 26, 26, 11, 12, 13, 14, 15,
/*16 */ 16, 17, 18, 26, 26, 10, 8, 26, 24, 25, 26, 26, 28, 29, 30, 31,
/*32 */ 26, 26, 28, 26, 26, 10, 23, 27, 26, 26, 26, 26, 26, 5, 6, 7,
/*48 */ 26, 26, 22, 26, 26, 30, 26, 4, 26, 26, 26, 26, 20, 21, 26, 26,
/*64 */ 32, 26, 26, 26, 26, 26, 26, 26, 26, 26, -94, 46, 60, 40, 43, 124,
/*80 */ 38, 26, 26, 26, 26, 26, 26, 26, 26, 26, 33, 36, 42, 41, 59, -84,
/*96 */ 45, 47, 26, 26, 26, 26, 26, 26, 26, 26, 26, 44, 37, 95, 62, 63,
/*112*/ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 58, 35, 64, 39, 61, 34,
/*128*/ 26, 97, 98, 99, 100, 101, 102, 103, 104, 105, 26, 26, 26, 26, 26, 26,
/*144*/ 26, 106, 107, 108, 109, 110, 111, 112, 113, 114, 26, 26, 26, 26, 26, 26,
/*160*/ 26, 26, 115, 116, 117, 118, 119, 120, 121, 122, 26, 26, 26, 26, 26, 26,
/*176*/ 26, 26, 26, 26, 26, 26, 26, 26, 26, 96, 26, 26, 26, 26, 26, 26,
/*192*/ 26, 65, 66, 67, 68, 69, 70, 71, 72, 73, 26, 26, 26, 26, 26, 26,
/*208*/ 26, 74, 75, 76, 77, 78, 79, 80, 81, 82, 26, 26, 26, 26, 26, 26,
/*224*/ 26, 26, 83, 84, 85, 86, 87, 88, 89, 90, 26, 26, 26, 26, 26, 26,
/*240*/ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 26, 26, 26, 26, 26, 26
};

/**
* 字节的ASCII->EBCDIC转换函数
*/
public static int ASCIIToEBCDIC(int ascii){
return AToE[ascii&0xff]&0xff;
}

/**
* 字节的EBCDIC->ASCII转换函数
*/
public static int EBCDICToASCII(int ebcdic){
return EToA[ebcdic&0xff]&0xff;
}

/**
* 字节流的ASCII->EBCDIC转换函数
*/
public static byte[] ASCIIToEBCDIC(byte[] ascii){
byte[] tobytes=new byte[ascii.length];
for(int i=0;i return tobytes;
}

/**
* 字节流的EBCDIC->ASCII转换函数
*/
public static byte[] EBCDICToASCII(byte[] ebcdic){
byte[] tobytes=new byte[ebcdic.length];
for(int i=0;i return tobytes;
}

/**
* 字符串的ASCII->EBCDIC转换函数
*/
public static String ASCIIToEBCDIC(String ascii){
return new String(ASCIIToEBCDIC(ascii.getBytes()));
}

/**
* 字符串的EBCDIC->ASCII转换函数
*/
public static String EBCDICToASCII(String ebcdic){
return new String(EBCDICToASCII(ebcdic.getBytes()));
}

/**
* 文件的ASCII->EBCDIC转换函数
*/
public static void ASCIIToEBCDIC(String fromfile,String tofile){
try{
FileInputStream in=new FileInputStream(new File(fromfile));
FileOutputStream out=new FileOutputStream(new File(tofile));
int tempint,i=0;
byte[] tempbytes=new byte[in.available()];
while((tempint=in.read())!=-1) tempbytes[i++]=(byte)tempint;
out.write(ASCIIToEBCDIC(tempbytes));
in.close();
out.close();
}catch(Exception e){
System.out.println(e);
}
}

/**
* 文件的EBCDIC->ASCII转换函数
*/
public static void EBCDICToASCII(String fromfile,String tofile){
try{
FileInputStream in=new FileInputStream(new File(fromfile));
FileOutputStream out=new FileOutputStream(new File(tofile));
int tempint,i=0;
byte[] tempbytes=new byte[in.available()];
while((tempint=in.read())!=-1) tempbytes[i++]=(byte)tempint;
out.write(EBCDICToASCII(tempbytes));
in.close()