只需使用十六进制表示法将其编码为 Delphi 字符。
在 Delphi 中,十六进制由$
前缀表示,#
表示Char
. 所以相当于你的bufSend2
价值观是:
SocketStream.WriteBuffer(#$6f#$06#$ff, 3);
#
表示下一个值是 a Char
,并$6f
表示十六进制值(相当于0x6f
C 中的值)。您只需将它们一个接一个地放置,就像您对#0#0#0#0
值所做的那样。
更好的解决方案是将每个正确转换为适当的AnsiChar
值,如果您发送少量字符,则效果很好:
SocketStream.WriteBuffer(AnsiChar(#$6f) + AnsiChar(#$06) + AnsiChar(#$ff), 3);
然而,最好的解决方案是使用array of Byte
:
// Static array
var
Buff: array[0..100] of Byte;
Buff[0] := $6f;
Buff[1] := $06;
Buff[2] := $ff;
SocketStream.WriteBuffer(Buff[0], 3);
// Dynamic array
var
Buff: array of Byte;
SetLength(Buff, 3);
Buff[0] := $6f;
Buff[1] := $06;
Buff[2] := $ff;
SocketStream.WriteBuffer(Buff[0], Length(Buff));
要将文本添加到任一数组,只需使用Ord(AnsiChar(Letter))
,例如
var
s: AnsiString;
i: Integer;
Len: Integer;
s := 'Test';
Len := Length(s);
SetLength(Buff, Len);
for i := 1 to Len do
Buff[i - 1] := Ord(AnsiChar(s[i]));
SocketStream.WriteBuffer(Buff[0], Len);