這些功能是有用的:德爾福和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