Delphi和FPC是否具有MakeWord功能(两个字节或字符)?

Ano*_*rog 3 delphi bit-manipulation freepascal bit-shift cpu-word

这些功能很有用:

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; 
Run Code Online (Sandbox Code Playgroud)

但是我想知道这些类型的函数(可以以不同方式实现)是否已经存在于某个地方(不是在windows api特定文件中,而是在跨平台RTL函数中).

示例用例:取两个字符GT并从中生成WORD结果.

MakeWord('G','T');
Run Code Online (Sandbox Code Playgroud)

我发现这比在代码中插入SHL/SHR和/或十六进制操作以及其他黑客更容易读取,而这些操作并没有描述代码正在做什么......所以这些函数肯定存在于某个地方?或者人们在他们的应用程序中自行推出?

或类似的东西:

var x: word;
begin
  lo(x) := byte('G');
  hi(x) := byte('T');
end;
Run Code Online (Sandbox Code Playgroud)

但是,这不会起作用,因为左侧不能分配给:但它比其他一些解决方案IMO更具可读性.

我想我也看过LoWord和HiWord函数(或者LoByte,HiByte),但通常只读它们.怎么样写喜欢?

Rem*_*eau 9

Delphi和FreePascal都有单位WordRec记录SysUtils:

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;
Run Code Online (Sandbox Code Playgroud)