日期:2014-05-20  浏览次数:20741 次

字符串与十六进制互转问题,请教
以下代码通过checkbox_显示16进制_CheckedChanged事件判断textbox->text显示字符串方式为十六进制或字符串,已完成字符串转十六进制显示部分,但十六进制转字符串不知怎么实现,
期望String^ str1=AEO 在十六进制显示方式下为 0x41 0x45 0x4f
期望 0x41 0x45 0x4f  显示为AEO

本例代码显示成656998,不知问题出在哪个环节?请高手不吝赐教!

请教





private: System::Void checkbox_显示16进制_CheckedChanged(System::Object^  sender, System::EventArgs^  e) {
 String^ strs;
 String^ strh;
 String^ strtemp;
 int datarec;

 if(checkbox_显示16进制->Checked == true)
 {
 strs=this->textBox1->Text;
 for(int i=0;i<strs->Length;i++)
 {
 datarec = strs[i];
 strh += "0x"+datarec.ToString("X")->PadLeft(2,'0')+" ";
 }
 this->textBox1->Text = strh;
 }
 else
 {
 strh = this->textBox1->Text;
 strh = strh->Replace("0x","");
 strh = strh->Replace(" ","");

 for(int i=0;i<strh->Length;i++,i++)
 {
 strtemp = strh[i].ToString()+strh[i+1].ToString();
 datarec = ConverStrInt(strtemp);
 datarec = datarec/10*16+datarec%10;

 strs += datarec;
 }
 this->textBox1->Text = strs;  
 }
 }
------最佳解决方案--------------------
strs += datarec;更改为 strs += (char)datarec;看看。
------其他解决方案--------------------
怎么没人回复
------其他解决方案--------------------
问题已解决,代码如下,多谢Jia_H的回复。
strtemp = strh[i].ToString()+strh[i+1].ToString();
 datarec = Convert::ToInt32(strtemp,16);  
 strs += (Convert::ToChar(datarec)).ToString();