Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi中字节变量位的处理_Delphi_Byte_Bits - Fatal编程技术网

Delphi中字节变量位的处理

Delphi中字节变量位的处理,delphi,byte,bits,Delphi,Byte,Bits,我使用delphi从一个.txt文件逐字节提取数据。对于每个字节,我需要交换该字节的起始位和结束位。我在google上搜索了几个小时,但在delphi中找不到任何关于在字节变量中操作位的参考资料。有什么想法吗 b := (b and $7E) or (b shr 7) or (b shl 7); 首先我们保留中间的6位,然后在寄存器移位操作中交换MSB和LSB位 Delphi中的位操作很有趣。 有很多选择,这是一个直截了当的解决方案。 David提出了一个LUT解决方案,它可以更快(尽管只需

我使用delphi从一个.txt文件逐字节提取数据。对于每个字节,我需要交换该字节的起始位和结束位。我在google上搜索了几个小时,但在delphi中找不到任何关于在字节变量中操作位的参考资料。有什么想法吗

b := (b and $7E) or (b shr 7) or (b shl 7); 
首先我们保留中间的6位,然后在寄存器移位操作中交换MSB和LSB位

Delphi中的位操作很有趣。 有很多选择,这是一个直截了当的解决方案。 David提出了一个LUT解决方案,它可以更快(尽管只需一点点)


关于位反映整个字节,有一个有趣的类似问题,请参阅。

最快的方法是使用查找表。这就是解决方案。第一个操作数是带MSB和LSB的b,第二个操作数是初始MSB(现在位于LSB位置),而第三个操作数是初始LSB(现在位于MSB位置)。当然,
ed结果是带有MSB-LSB交换的
b
。此外,如果要查找表,可以使用上面的一行代码生成该表!路路的完美答案!谢谢你的解释,安德烈亚斯!