古詩詞大全網 - 四字成語 - delphi7 idTcpServer 怎麽以十六進制模式發送中英文混合的字符串(對方只能接收十六進制的數據)?在線急

delphi7 idTcpServer 怎麽以十六進制模式發送中英文混合的字符串(對方只能接收十六進制的數據)?在線急

中文轉成 array of byte 應該就是妳想要的結果

以下是函數和轉換例子

我就是這樣用字節發送到網絡上 和接收的

如果是 帶中文的String 轉byte

function UniCode2GB(S: string): string;

var I: Integer;

begin

I := Length(S);

while I >= 4 do begin

try

Result := WideChar(StrToInt('$' + S[I - 3] + S[I - 2] + S[I - 1] + S[I])) + Result;

except end;

I := I - 4;

end;

end;

function GB2UniCode(GB: string): string;

var

s: string;

i, j, k: integer;

a: array[1..160] of char;

begin

s := '';

StringToWideChar(GB, @(a[1]), 500);

i := 1;

while ((a[i] <> #0) or (a[i + 1] <> #0)) do begin

j := Integer(a[i]);

k := Integer(a[i + 1]);

s := s + Copy(Format('%X ', [k * $100 + j + $10000]), 2, 4);

//S := S + Char(k)+Char(j);

i := i + 2;

end;

Result := s;

end;

var

s1,name:string;

ByteArr: array of byte;

s1 := GB2UniCode(‘張颯www’);

for I := 0 to round(Length(s1) / 2) - 1 do //以下是轉string byte array

begin

ByteArr[I] := StrToint('$' + SubStr(s1, I * 2 + 1, 2));

end;

for I := 0 to len do //以下是byte array 轉 string 支持中文

begin

Name := Name + IntToHex(ByteArr[I], 2);

end;

Name := UniCode2GB(Name);

以上是帶中文的string 轉 byte array 和 byte array 轉 String

同樣可以支持不帶中文的string 和array轉換

如果是妳用字節方式發送 那就

1 GB2UniCode

2 發送

接收以後

1 轉HEX字符串

for I := 0 to len do //以下是byte array 轉 string 支持中文

begin

Name := Name + IntToHex(ByteArr[I], 2);

end;

Name := UniCode2GB(Name);

2 UniCode2GB 轉String

如果妳用String方式發送

1 GB2UniCode

2

for I := 0 to len do //以下是byte array 轉 string 支持中文

begin

Name := Name + IntToHex(ByteArr[I], 2);

end;

Name := UniCode2GB(Name);

直接發送Name Name就是16進制的

接收就是 UniCode2GB