有人能把C转换成java吗,在线等!有C源码
int _tmain(int argc, _TCHAR* argv[])
{
char fileName[100];
char data[2];
BYTE *outBuf;
FILE *myFile;
int len;
int i;
BYTE adressHigh;
BYTE adressLow;
BYTE dataLen;
BYTE dataType;
BYTE byteData;
int totalLen;
totalLen = 0;
len = 0;
adressHigh = 0;
adressLow = 0;
dataLen = 0;
dataType = 0;
printf("请输入HEX格式文件名:");
scanf_s("%s",fileName);
printf("\n");
if (fopen_s(&myFile,fileName,"r") != 0)
{
printf("打开文件%s失败!",fileName);
}
//将文件长度计算出来用于申请存储数据的缓冲区
while (!feof(myFile))
{
++len;
fgetc(myFile);
}
rewind(myFile);
//因为是每两个字符表示一个字节,所以最大的数据个数要少于文件字符个数的一半
outBuf = (BYTE*)malloc(len/2);
memset(outBuf,0xff,len/2);
while (!feof(myFile))
{
//:号表示一行的开始
if (fgetc(myFile) == ':')
{
//一行的头两个字符表示该行包含的数据长度
data[0] = fgetc(myFile);
data[1] = fgetc(myFile);
CharToByte(data,&dataLen);
//一行的第、个字符表示数据存储起始地址的高位
data[0] = fgetc(myFile);
data[1] = fgetc(myFile);
CharToByte(data,&adressHigh);
//一行的第、个字符表示数据存储起始地址的低位
data[0] = fgetc(myFile);
data[1] = fgetc(myFile);
CharToByte(data,&adressLow);
//一行的第、个字符表示数据类型
data[0] = fgetc(myFile);
data[1] = fgetc(myFile);
CharToByte(data,&dataType);
//当数据类型为时,表示本行包含的是普通数据记录
if (dataType == 0x00)
{
for (i=0;i<dataLen;i++)
{
data[0] = fgetc(myFile);
data[1] = fgetc(myFile);
CharToByte(data,&byteData);
outBuf[adressHigh*256+adressLow+i] = byteData;
}
totalLen += dataLen;
}
//当数据类型为时,表示到了最后一行
if (dataType == 0x01)
{
printf("文件结束记录!");
}
//当数据类型为时,表示本行包含的是扩展段地址记录
if (dataType == 0x02)
{
printf("不支持扩展段地址记录!");
return 0;
}
//当数据类型为时,表示本行包含的是扩展线性地址记录
if (dataType == 0x04)
{
printf("不支持扩展线性地址记录!");
return 0;
}
}
}
fclose(myFile);
printf("请输入保存的BIN格式文件名:");
scanf_s("%s",fileName);
if (fopen_s(&myFile,fileName,"w") != 0)
{
printf("打开文件%s失败!",fileName);
}
for (i=0;i<totalLen;i++)
{
fputc(outBuf[i],myFile);
}
return 0;
}