首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

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

2012-02-23 
如何将文本文件转换为二进制文件请教各位大虾,我有如下一个文本文件,请问如何能将其转换为二进制文件.最终

如何将文本文件转换为二进制文件
请教各位大虾,我有如下一个文本文件,请问如何能将其转换为二进制文件.
最终转换成的格式为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;
}

热点排行