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

在MEMO里将0x12,0x34,0x71,0x28,转换成0x21,0x43,0x17,0x82,解决办法

2012-11-08 
在MEMO里将0x12,0x34,0x71,0x28,转换成0x21,0x43,0x17,0x82,在MEMO里将0x12,0x34,0x71,0x28,转换成0x21,0x

在MEMO里将0x12,0x34,0x71,0x28,转换成0x21,0x43,0x17,0x82,
在MEMO里将0x12,0x34,0x71,0x28,转换成0x21,0x43,0x17,0x82,代码如何实现,刚开始学习BCB。请大家帮忙一下。

[解决办法]

C/C++ code
       TStringList *pList = new TStringList() ;        pList->Delimiter = ',' ;        pList->DelimitedText = Memo1->Text ;        Memo1->Clear() ;        int tmpInt = 0 ;;        for(int i = 0; i < pList->Count; i++)        {             tmpInt =  pList->Strings[i].ToIntDef(0) ;             tmpInt<<= 4 ;             tmpInt |= (tmpInt>>8) ;             tmpInt &= 0xff ;             Memo1->Text =  Memo1->Text + "0x" + IntToHex(tmpInt,2) + ",";        }        delete pList ;
[解决办法]
既然是固定的字符串格式,直接交换位置不是效率更高

C/C++ code
//把你的代码稍微修改了一下,bcb6下调试过void __fastcall TForm1::Button1Click(TObject *Sender){  String str;  char ch;  int n = StrToInt(Memo1->Lines->Count);//取得MEMO里有多少行  int tmp;  for(int i=0; i<n; i++)  {    str=Memo1->Lines->Strings[i]; //取行字符串    tmp = str.Length();           //取得行字符串的字符数    for(int j=0; j<tmp/5; j++)    {    //执行第3和第4位的字符交换(注意这里的下标是从1开始的)       ch=str[j*5+3];       str[j*5+3]=str[j*5+4];       str[j*5+4]=ch;    }    Memo1->Lines->Strings[i] = str;//显示转换后一行字符串  }} 

热点排行