{$MODE OBJFPC}{$LONGSTRINGS ON}
uses
SysUtils;
function StringToSmallInt(APointer: Pointer): SmallInt;
var
ResBytes: packed array [0 .. 1] of Byte absolute Result;
RawValue: AnsiString;
begin
RawValue := PAnsiChar(APointer);
ResBytes[0] := StrToInt(Copy(RawValue, 5, 3));
ResBytes[1] := StrToInt(Copy(RawValue, 1, 3));
end;
function SmallIntToString(APointer: Pointer): AnsiString;
var
ValBytes: packed array [0 .. 1] of Byte;
begin
ValBytes[0] := PByte(APointer + 1)^;
ValBytes[1] := PByte(APointer + 0)^;
Result := Format('$%2.2x $%2.2x', [ValBytes[0], ValBytes[1]]);
end;
var
StrValue: AnsiString = '$0D $33';
IntValue: SmallInt;
begin
WriteLn('Input: "', StrValue, '"');
IntValue := StringToSmallInt(PChar(StrValue));
StrValue := SmallIntToString(@IntValue);
WriteLn('Output: "', StrValue, '"');
end.
eyRNT0RFIE9CSkZQQ317JExPTkdTVFJJTkdTIE9OfQoKdXNlcwogIFN5c1V0aWxzOwoKICBmdW5jdGlvbiBTdHJpbmdUb1NtYWxsSW50KEFQb2ludGVyOiBQb2ludGVyKTogU21hbGxJbnQ7CiAgdmFyCiAgICBSZXNCeXRlczogcGFja2VkIGFycmF5IFswIC4uIDFdIG9mIEJ5dGUgYWJzb2x1dGUgUmVzdWx0OwogICAgUmF3VmFsdWU6IEFuc2lTdHJpbmc7CiAgYmVnaW4KICAgIFJhd1ZhbHVlIDo9IFBBbnNpQ2hhcihBUG9pbnRlcik7CgogICAgUmVzQnl0ZXNbMF0gOj0gU3RyVG9JbnQoQ29weShSYXdWYWx1ZSwgNSwgMykpOwogICAgUmVzQnl0ZXNbMV0gOj0gU3RyVG9JbnQoQ29weShSYXdWYWx1ZSwgMSwgMykpOwogIGVuZDsKCiAgZnVuY3Rpb24gU21hbGxJbnRUb1N0cmluZyhBUG9pbnRlcjogUG9pbnRlcik6IEFuc2lTdHJpbmc7CiAgdmFyCiAgICBWYWxCeXRlczogcGFja2VkIGFycmF5IFswIC4uIDFdIG9mIEJ5dGU7CiAgYmVnaW4KICAgIFZhbEJ5dGVzWzBdIDo9IFBCeXRlKEFQb2ludGVyICsgMSleOwogICAgVmFsQnl0ZXNbMV0gOj0gUEJ5dGUoQVBvaW50ZXIgKyAwKV47CgogICAgUmVzdWx0IDo9IEZvcm1hdCgnJCUyLjJ4ICQlMi4yeCcsIFtWYWxCeXRlc1swXSwgVmFsQnl0ZXNbMV1dKTsKICBlbmQ7Cgp2YXIKICBTdHJWYWx1ZTogQW5zaVN0cmluZyA9ICckMEQgJDMzJzsKICBJbnRWYWx1ZTogU21hbGxJbnQ7CmJlZ2luCiAgV3JpdGVMbignSW5wdXQ6ICAiJywgU3RyVmFsdWUsICciJyk7CgogIEludFZhbHVlIDo9IFN0cmluZ1RvU21hbGxJbnQoUENoYXIoU3RyVmFsdWUpKTsKICBTdHJWYWx1ZSA6PSBTbWFsbEludFRvU3RyaW5nKEBJbnRWYWx1ZSk7CgogIFdyaXRlTG4oJ091dHB1dDogIicsIFN0clZhbHVlLCAnIicpOwplbmQu