Python中的Hex Bitmasking

时间:2017-08-07 00:59:35

标签: python python-3.x hex bitwise-operators bin

使用十六进制数据表示实现位掩码的最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包看起来合理,但转换为十进制数。这是对的吗?

1 个答案:

答案 0 :(得分:1)

虽然bytes不支持按位&操作,但整数可以。因此,我们可以迭代字节序列(产生整数),应用&操作,并将它们转换回字节序列:

>>> bytes(map(operator.and_, b'\x02\x00\x00\x01', b'\x02\x00\x00\x00'))
b'\x02\x00\x00\x00'