可以放到兩個字節中,但無法實現"取道两个asii字符数组中",因為Ascii字符首位是'0'.
var Str:string='ABCDE人民';
如果你這樣定義,那麼,'ABCDE'幾個字符各佔一個字節,'人'佔兩個字節,'民'佔兩個字節.
var Str:WideString='ABCDE人民';
如果你這樣定義,那麼,'A','B','C','D','E','人','民'各佔兩個字節.
另外,告訴你如何判斷某個字節是Ascii碼還是漢字首字節還是尾字節.
var
S:String;
begin
S:='人';
case ByteType(S,1) of //判斷第一個字節是什麼類型.
mbSingleByte://單字節字符.即ascii碼
mbLeadByte: //漢字首字節
mbTrailByte //漢字末字節
end;
var
S: string;
tmpStr:widestring;
i:integer;
begin
tmpStr:='abc你好';
S:= tmpStr+'---';
for i:=1 to Length(tmpStr) do
S :=S+ IntToStr(Ord(tmpStr)) + ' ';
MessageDlg(S, mtInformation, [mbOk], 0);
end;
function TForm1.GetW(Text:string): string;
var
buff1,buff2:byte;
begin
with TMemoryStream.Create do
begin
Write(Text[1],Length(Text));
Position:=0;
Read(buff1,SizeOf(byte));
Read(buff2,SizeOf(byte));
Free;
end;
Result:=IntToHex(Ord(buff1),2)+IntToHex(Ord(buff2),2);
end;