我需要将一个二进制文件内容转成Ascii码字符写到另外一个文本文件里
我写了个c
// testasctobin.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include <stdio.h>
#ifndef A2E__H#define A2E__Hunsigned char ASCIItoEBCDIC(const unsigned char c);/* A2E.C */unsigned char EBCDICtoASCII(const unsigned char c);/* A2E.C */extern int ascii2ebcdic[256]; /* Toascii.C */extern int ebcdic2ascii[256]; /* Toascii.C */#endif /* A2E__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];}int main(int argc, char* argv[])
{
FILE *fp,*fp1;
//char ch;
unsigned char getbuffer[20];
unsigned char ascch[20];
fp = fopen("c:\\databin","rb");
if(fp != NULL)
{
fp1 = fopen("c:\\ascdata.txt","w");
while (fread(getbuffer,1,1,fp)!=0)
{
ascch[0] = EBCDICtoASCII(getbuffer[0]);
fwrite(ascch,1,1,fp1);
//fputc(ascch,fp1);
//printf((char *)ascch);
}
fclose(fp1);
}
fclose(fp);
return 0;
}
我写了个c
// testasctobin.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include <stdio.h>
#ifndef A2E__H#define A2E__Hunsigned char ASCIItoEBCDIC(const unsigned char c);/* A2E.C */unsigned char EBCDICtoASCII(const unsigned char c);/* A2E.C */extern int ascii2ebcdic[256]; /* Toascii.C */extern int ebcdic2ascii[256]; /* Toascii.C */#endif /* A2E__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];}int main(int argc, char* argv[])
{
FILE *fp,*fp1;
//char ch;
unsigned char getbuffer[20];
unsigned char ascch[20];
fp = fopen("c:\\databin","rb");
if(fp != NULL)
{
fp1 = fopen("c:\\ascdata.txt","w");
while (fread(getbuffer,1,1,fp)!=0)
{
ascch[0] = EBCDICtoASCII(getbuffer[0]);
fwrite(ascch,1,1,fp1);
//fputc(ascch,fp1);
//printf((char *)ascch);
}
fclose(fp1);
}
fclose(fp);
return 0;
}
解决方案 »
- 求助!!
- 有高人能还原算法吗。。。。
- 请问如何将图片嵌入exe中?
- 如何清除JAVA中Jframe上面刚刚画好的圆然后绘制新的图案
- java编程问题
- 一个简单的java算数式(除数为double=0.0),在线等。
- StringTokenizer的问题,一直没有解决
- javamail问题,如果哪位老大帮忙解决了,一定酬谢!!
- ********************我想通过WEB页面形式使用户录音,并且将录音信息保存到我的WEB服务器,请问大家怎么解决?********************
- JBuilder5 D版入手
- 请问各位高手,++i什么时候自增1,什么时候自增2啊?
- 关于加 wav声音的个小问题哦(在线急求 )
package filewrite;import java.io.*;public class bintoasc {
public bintoasc() {
} private static char[] a2e = { 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 };
private static char[] e2a = { 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 }; public char ASCIItoEBCDIC(int c) { return a2e[c]; } public static char EBCDICtoASCII(int c) { return e2a[c]; } public static void main(String[] args) { bintoasc bintoasc = new bintoasc();
DataInputStream in = null;
DataOutputStream outp = null;
char[] tmpchar = new char[1024];
boolean cont = true;
try
{
in = new DataInputStream(new FileInputStream("c:/databin"));
outp = new DataOutputStream(new FileOutputStream("c:/ascdata.txt")); //in.readChar();
}
catch(IOException e)
{
}
while (cont) {
try {
//int n = in.read(); // 从文件读取数据
byte n= in.readByte();
//System.out.write(buff, 0, n); // 写入System.out中
Byte b = new Byte(n);
int tmp_i = b.intValue();
int tmp = 0;
if(tmp_i<0)
{
tmp = tmp_i + 256;
}
else
{
tmp = tmp_i;
}
//Integer tmp_i = new Integer(tmp); char outasc = EBCDICtoASCII(tmp); //Byte bytasc = new Byte(outasc);
outp.writeByte(outasc);
//System.out.println(outasc);
}
catch (Exception e) {
//e.printStackTrace();
cont = false;
}
} try {
in.close();
outp.close();
}
catch (IOException e) {
System.err.println("文件错误");
System.exit(1);
} }
}
但转出来的结果里有一些奇怪的东西乱的汉字
不知道是否正确,哪位大虾能帮助一下,如果能有例子那就最好了,千万拜托了,谢谢!!!!