function Encode2(var s: WideString): String; var i, len: Integer; cur: Integer; t: String; begin Result := ''; len := Length(s); i := 1; while i <= len do begin cur := Ord(s[i]); //BCD转换 FmtStr(t, '%4.4X', [cur]); Result := Result+t; inc(i); end; end;
function Encode2(var s: WideString): String; var i, len: Integer; cur: Integer; t: String; begin Result := ''; len := Length(s); i := 1; while i <= len do begin cur := Ord(s[i]); //BCD转换 FmtStr(t, '%4.4X', [cur]); Result := Result+t; inc(i); end; end;
function Encode2(var s: WideString): String; var i, len: Integer; cur: Integer; t: String; begin Result := ''; len := Length(s); //字符串的长度,在C中一般用字符数组来表示字符串 i := 1; while i <= len do begin cur := Ord(s[i]); //取字符串第i个字符的ASC码 比如字符'1',cur = Ord('1') = 49 ; //BCD转换 FmtStr(t, '%4.4X', [cur]); //这个表示格式输出 相当于C中的Format Result := Result+t; inc(i); // Inc相当于C中的 ++, inc(i) 等价于c总的i++ end; end;不知道这样讲 你清楚了没?
function Encode2(s: WideString): String; var i, len: Integer; cur : Integer; t : String; begin Result := ''; len := Length(s); //获得字符串中的字符个数,因为是WideString,所以每个汉字、英文字符都算作一个字符 i := 1; while i <= len do begin cur := Ord(s[i]); //获得某个字符的Unicode编码 //BCD转换 FmtStr(t, '%4.4X', [cur]); //转换成四位十六进制形式 Result := Result + t; inc(i); end; end;
var
i, len: Integer;
cur: Integer;
t: String;
begin
Result := '';
len := Length(s);
i := 1;
while i <= len do
begin
cur := Ord(s[i]);
//BCD转换
FmtStr(t, '%4.4X', [cur]);
Result := Result+t;
inc(i);
end;
end;
var
i, len: Integer;
cur: Integer;
t: String;
begin
Result := '';
len := Length(s);
i := 1;
while i <= len do
begin
cur := Ord(s[i]);
//BCD转换
FmtStr(t, '%4.4X', [cur]);
Result := Result+t;
inc(i);
end;
end;
function Encode2(var s: WideString): String;
var
i, len: Integer;
cur: Integer;
t: String;
begin
Result := '';
len := Length(s); //字符串的长度,在C中一般用字符数组来表示字符串
i := 1;
while i <= len do
begin
cur := Ord(s[i]); //取字符串第i个字符的ASC码 比如字符'1',cur = Ord('1') = 49 ;
//BCD转换
FmtStr(t, '%4.4X', [cur]); //这个表示格式输出 相当于C中的Format
Result := Result+t;
inc(i); // Inc相当于C中的 ++, inc(i) 等价于c总的i++
end;
end;不知道这样讲 你清楚了没?
Encode2('中') 返回 4E2D
Encode2('国') 返回 56FD
Encode2('中国') 返回 4E2D56FD
function Encode2(s: WideString): String;
var
i, len: Integer;
cur : Integer;
t : String;
begin
Result := '';
len := Length(s); //获得字符串中的字符个数,因为是WideString,所以每个汉字、英文字符都算作一个字符
i := 1;
while i <= len do
begin
cur := Ord(s[i]); //获得某个字符的Unicode编码
//BCD转换
FmtStr(t, '%4.4X', [cur]); //转换成四位十六进制形式
Result := Result + t;
inc(i);
end;
end;
{
for(ULONG dwLoop = 0;dwLoop < wcslen(pWsString); dwLoop++)
{
sprintf(ppResult, "%04X", pWsString[dwLoop]);
ppResult += 4;
}
}
void main()
{
wchar_t wcDbg[1024];
wcscpy(wcDbg, L"13我1234567"); //测试数据
char oResult[1024 * 4]; //这个保存结果
ZeroMemory(&oResult, sizeof(oResult));
Encode2(wcDbg, oResult); return;
}
var
SourceLen, DestLen: Integer;
Buffer: array[0..511] of Char;
begin
SourceLen := Length(Source);
if SourceLen >= 255 then SourceLen := 255;
if SourceLen = 0 then DestLen := 0 else
begin
DestLen := WideCharToMultiByte(0, 0, Pointer(Source), SourceLen,
Buffer, SizeOf(Buffer), nil, nil);
if DestLen > MaxLen then DestLen := MaxLen;
end;
Dest^[0] := Chr(DestLen);
if DestLen > 0 then Move(Buffer, Dest^[1], DestLen);
end;
function StringToWideChar(const Source: string; Dest: PWideChar;
DestSize: Integer): PWideChar;
begin
Dest[MultiByteToWideChar(0, 0, PChar(Source), Length(Source),
Dest, DestSize - 1)] := #0;
Result := Dest;
end;
MultiByteToWideChar
都是windows API