ethereum - Solidity:检查是否在 bytes24 中设置了特定位
问题描述
我正在尝试在 Solidity 中实现一个函数,该函数检查某个位置的位是否已设置,即我想要一个函数,例如:
function isBitSet(bytes24 b, uint pos) returns (bool){
return ...
}
我试图将这种方法转移到 Solidity:Checking if a bit is set or not
function isBitSet(bytes24 b, uint pos) returns (bool){
return (b & (1 << pos)) != 0;
}
但是,这不起作用,因为(1 << pos)
返回类型uint256
...
解决方案
function isBitSet(bytes24 b, uint pos) internal view returns (bool){
return ( bytes32(b) & bytes32(1 << (pos+64)) ) != 0;
}
推荐阅读
- reactjs - (React) useParams 获取 id 并从列表中显示
- javascript - 如何通过单击兄弟元素或父元素来获取 dom 的某个部分
- php - 我如何获取 IMAP 收件箱并将其保存到 codeigniter 中的数据库?
- r - 从 R 中的经纬度列表创建多边形
- python-3.x - Netmiko 异步连接 100 台设备
- javascript - 我想使用反应钩子将我的反应类组件转换为功能组件。它给出了如下错误
- json - 如何使用 react-native-localize 维护模块级翻译文件?
- ios - NSKeyedArchiver 不推荐使用的方法问题
- r - 在R闪亮的UI中插入图像以覆盖右半页
- r - 这个 JSON 文件可以用 R 构建吗?