使用十六进制数据表示实现位掩码的最pythonic /最简单方法是什么?
例如,我有
test & ref
我想有效地按位计算:
public function indexproduct(Request $request) {
$query = Product::orderBy('created_at','desc');
if($request->keyword){
// This will only executed if you received any keyword
$query = $query->where('title','like','%'.$keyword.'%');
}
if($request->min_price && $request->max_price){
// This will only executed if you received any price
// Make you you validated the min and max price properly
$query = $query->where('price','>=',$request->min_price);
$query = $query->where('price','<=',$request->max_price);
}
$products = $query->paginate(6);
return view('frontend.shop', compact('products'));
}
似乎Python无法比较字节类型的对象,所以我认为我需要首先转换为其他表示,但我不是最佳方式。
binascii和struct包看起来合理,但转换为十进制数。这是对的吗?
答案 0 :(得分:1)
虽然bytes
不支持按位&
操作,但整数可以。因此,我们可以迭代字节序列(产生整数),应用&
操作,并将它们转换回字节序列:
>>> bytes(map(operator.and_, b'\x02\x00\x00\x01', b'\x02\x00\x00\x00'))
b'\x02\x00\x00\x00'