Delphi 和 FPC 是否具有 MakeWord 函数(两个字节或字符)?
Does Delphi and FPC have MakeWord functions (out of two bytes or chars)?
这些函数很有用:
function MakeWord(low, high: char): word;
begin
result := byte(high) shl 8 + byte(low);
end;
function MakeWord(low, high: byte): word;
begin
result := high shl 8 + low;
end;
但是我想知道这些函数(可以不同地实现)是否已经存在于某个地方(不是在 windows api 特定文件中,而是在跨平台 RTL 函数中)。
示例用例:获取两个字符 GT 并从中生成 WORD 结果。
MakeWord('G','T');
我发现这比在代码中插入 SHL/SHR AND/OR 十六进制操作和其他没有描述代码正在做什么的 hack 更具可读性......那么这些函数肯定已经存在于某个地方了吗?还是人们在他们的应用程序中自己滚动?
或类似的东西:
var x: word;
begin
lo(x) := byte('G');
hi(x) := byte('T');
end;
然而,这将不起作用,因为无法将左侧分配给:但它比其他一些解决方案更具可读性,IMO。
我想我也见过 LoWord 和 HiWord 函数(或 LoByte、HiByte),但通常是在只读的情况下。写信给你好和你好吗?
Delphi和FreePascal在SysUtils
单元中都有一条WordRec
记录:
Delphi: http://docwiki.embarcadero.com/Libraries/en/System.SysUtils.WordRec
FreePascal:https://www.freepascal.org/docs-html/rtl/sysutils/wordrec.html
例如:
uses
..., SysUtils;
var
x: Word;
begin
WordRec(x).Lo := Byte(Ord('G'));
WordRec(x).Hi := Byte(Ord('T'));
end;
是的,FreePascal在windows单元有makeword。(makeword本来就是一个winapi宏IIRC)
此外,它还具有内联功能,可以优化像这样的小函数的调用开销。
这些函数很有用:
function MakeWord(low, high: char): word;
begin
result := byte(high) shl 8 + byte(low);
end;
function MakeWord(low, high: byte): word;
begin
result := high shl 8 + low;
end;
但是我想知道这些函数(可以不同地实现)是否已经存在于某个地方(不是在 windows api 特定文件中,而是在跨平台 RTL 函数中)。
示例用例:获取两个字符 GT 并从中生成 WORD 结果。
MakeWord('G','T');
我发现这比在代码中插入 SHL/SHR AND/OR 十六进制操作和其他没有描述代码正在做什么的 hack 更具可读性......那么这些函数肯定已经存在于某个地方了吗?还是人们在他们的应用程序中自己滚动?
或类似的东西:
var x: word;
begin
lo(x) := byte('G');
hi(x) := byte('T');
end;
然而,这将不起作用,因为无法将左侧分配给:但它比其他一些解决方案更具可读性,IMO。
我想我也见过 LoWord 和 HiWord 函数(或 LoByte、HiByte),但通常是在只读的情况下。写信给你好和你好吗?
Delphi和FreePascal在SysUtils
单元中都有一条WordRec
记录:
Delphi: http://docwiki.embarcadero.com/Libraries/en/System.SysUtils.WordRec
FreePascal:https://www.freepascal.org/docs-html/rtl/sysutils/wordrec.html
例如:
uses
..., SysUtils;
var
x: Word;
begin
WordRec(x).Lo := Byte(Ord('G'));
WordRec(x).Hi := Byte(Ord('T'));
end;
是的,FreePascal在windows单元有makeword。(makeword本来就是一个winapi宏IIRC)
此外,它还具有内联功能,可以优化像这样的小函数的调用开销。