这些功能是有用的:德尔福和FPC有MakeWord函数(两个字节或字符)?
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和/或十六进制的操作和在不说明什么代码做代码的其他黑客更具可读性...所以肯定存在这些功能已经某处?或者人们在自己的应用中推出自己的产品?
或者类似的东西:
var x: word;
begin
lo(x) := byte('G');
hi(x) := byte('T');
end;
不过,这并不像左侧工作不能被分配到:但它是更具可读性,比其他一些解决方案,IMO。
我想我已经看到LoWord和HiWord的功能(或LoByte,HiByte),但通常在只读的情况下。怎么写给你和洛?
您是否知道'Char'的大小? – MBo
@MBo:我想这个转换为'Byte()'解决了这个问题。 –
@Rudy Velthuis这个角色隐藏了潜在的问题(信息丢失),但没有完全解决它 – MBo