读书人

怎么将文本文件转换为二进制文件

发布时间: 2012-02-23 22:01:35 作者: rapoo

如何将文本文件转换为二进制文件
请教各位大虾,我有如下一个文本文件,请问如何能将其转换为二进制文件.
最终转换成的格式为0101010001110010 ....这样的.

/* thermistor coolant temperature in deg x 10 */
#ifndef GCC_BUILD
#pragma ROM_VAR CLT_ROM
#endif
const short cltfactor_table[1024] EEPROM_ATTR = {
1,
2,
3,
4,
5
}



[解决办法]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1-> Execute())
{
AnsiString HEX;
AnsiString filename=OpenDialog1-> FileName;

TMemoryStream *ss;
ss=new TMemoryStream();
ss-> LoadFromFile(filename);
int size=ss-> Size;
char *buff = new char[size+1];
ss-> Read(buff,ss-> Size);


AnsiString result = BCD_to_AnsiString(buff,ss-> Size);
result = HexStrToBinStr(result);

TMemoryStream *tt;
tt=new TMemoryStream();
tt-> Write(result.c_str(),result.Length());
tt-> SaveToFile(filename+ ".txt ");


delete ss;
delete tt;
delete buff;

}
}
//---------------------------------------
AnsiString TForm1::HexStrToBinStr(AnsiString Hex)
{ char C,*Bin[]={ "00 ", "01 ", "10 ", "11 "};
int i,Len,Idx; AnsiString HexStr,BinStr;
HexStr=Hex.UpperCase(); //先将HEX字符串转换为大写
BinStr= " ";
Len=HexStr.Length();
for(i=1;i <=Len;i++)
{ C=HexStr[i];
if(C> = 'A ')Idx=C- 'A '+10;
else if(C <= '9 ')Idx=C- '0 ';
else Idx=-1;
if(Idx <0||Idx> =16)continue; //HEX数据字符有错误,忽略
BinStr+=Bin[Idx/4]; //Hex字符转为Bin后的高四位
BinStr+=Bin[Idx%4]; //Hex字符转为Bin后的低四位
}
return BinStr;
}
//---------------------------------------
AnsiString TForm1::BCD_to_AnsiString(char * P_BCD, int length)
{
//TODO: Add your source code here
AnsiString returnstring = " ";
char high_char,low_char,temp;
for(int i=0;i <length;i++)
{
temp = *P_BCD++;
high_char = (temp&0xf0)> > 4;
low_char = temp&0x0f;
if ((high_char> =0x00)&&(high_char <=0x09))
high_char+=0x30;
if ((high_char> =0x0A)&&(high_char <=0x0F))
high_char+=0x37;

if ((low_char> =0x00)&&(low_char <=0x09))
low_char+=0x30;
if ((low_char> =0x0A)&&(low_char <=0x0F))
low_char+=0x37;

returnstring += AnsiString(high_char);
returnstring += AnsiString(low_char);
}
return returnstring;
}

读书人网 >C++ Builder

热点推荐