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),但通常只读它们.怎么样写喜欢?
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)
| 归档时间: |
|
| 查看次数: |
298 次 |
| 最近记录: |