Du schickst also folgendes los
Code:
999 = 0x03E7 => 0xE7, 0x03
Diese beiden Bytes gehen in der Reihenfolge auf die Reise.
Beim Umwandeln der Nachricht von
string
nach Bytes kommt das heraus
Code:
0x3F, 0x03 => 0x033F = 831
? #03
Und warum bekommst du ein
??
Ganz einfach, weil
0xE7 größer ist als
0x7F und das wird umgewandelt in
Delphi-Quellcode:
function TIdASCIIEncoding.GetBytes(const AChars: PIdWideChar; ACharCount: Integer;
ABytes: PByte; AByteCount: Integer): Integer;
var
P: PIdWideChar;
i : Integer;
begin
P := AChars;
Result := IndyMin(ACharCount, AByteCount);
for i := 1 to Result do begin
// replace illegal characters > $7F
if UInt16(P^) > $007F then begin
ABytes^ := Byte(Ord('?'));
end else begin
ABytes^ := Byte(P^);
end;
//advance to next char
Inc(P);
Inc(ABytes);
end;
end;
ah ja ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)