我必须将字符串写入一个二进制MIDI文件中。标准要求必须知道字符串的字节数。由于我还想编写移动设备版本,所以不能使用AnsiString,这是确保字符串为单字节字符串的好方法。这样可以简化事情。我测试了以下代码:
TByte = array of Byte;
function TForm3.convertSB (arg: string): TByte;
var
i: Int32;
begin
Label1.Text := (SizeOf (Char));
for i := Low (arg) to High (arg) do
begin
label1.Text := label1.Text + ' ' + IntToStr (Ord (arg [i]));
end;
end; // convert SB //
convertSB ('MThd');
它在Windows和Android中返回2 77 84 104 100(作为标签文本)。这是否意味着Delphi默认将字符串视为UTF-8?这将极大地简化事情,但我在帮助文档中找不到它。将其转换为字节数组的最佳方法是什么?读取每个字符并测试它是1、2还是4个字节,并在数组中分配此空间吗?要将其转换回字符:只需读取字节数组,直到遇到一个小于128的字节即可。