例:
AscW("中") 在VB中的值是 20013。
我在DELPHI中也要实现这种功能,该怎么处理??
Delphi里的 Ord 不能处理中文汉字,该怎么办?
如果把汉字分成两个字符的话,怎么计算得到的值?
那位兄弟知道的话,麻烦告诉我。谢谢了!
AnsiString Code=IntToStr(WideString("中")[1]);
Memo1->Lines->Add("Code="+Str);
void __fastcall TForm1::Button1Click(TObject*Sender)
{
AnsiString dd1=Edit1->Text;//输入的中文字符
BYTE *Buff=dd1.c_str();
AnsiString dd;
while(*Buff!=0)
{ dd.printf("%x",*Buff++);//16进制输出用x,10进制输出用d,8进制输出用o
Edit2->Text=Edit2->Text+dd;//16进制输出
}
}
你自己试一下.
显示中文字ASC:
AnsiString MyString = "武当赵堡太极拳";
int MyAsc = WideString(MyString)[1]; //取得第一个字的代码
ShowMessage(MyAsc); //显示:27494
unsigned char *chinese="中";
int temp;
temp=*chinese;
ShowMessage(IntToStr(temp));//这个显示第一个字节的值
temp=*(chinese+1);
ShowMessage(IntToStr(temp));//这个显示第二个字节的值
结果第一次显示:214,第二次显示208
我觉得方法是对的,问题是你在VB里显示的是20013,这之间有什么联系呢?
而且照道理来说,中文是两个字符组成的,显示一个中文的ASCII码,肯定是分开来显示才对呀?摸不着头脑
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString zhong="中";
WideString wz=zhong;
wchar_t z=wz[1];
int zi=(unsigned short &)z;
ShowMessage(zi); // 显示“中”的Unicode内码 20013
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Caption = (int)((WideString)"中")[1];
// Caption = (WideString)(WideChar)20013; //相反
}