为什么在将字节写入文件时在CPython中使用“& 0xff”,它的作用是什么?

时间:2017-01-18 15:51:40

标签: python cpython

如:

static void w_long(long x, WFILE *p)
{
    w_byte((char)( x      & 0xff), p);
    w_byte((char)((x>> 8) & 0xff), p);
    w_byte((char)((x>>16) & 0xff), p);
    w_byte((char)((x>>24) & 0xff), p);
}

为什么pyc文件不可读,const text / string在哪里?

1 个答案:

答案 0 :(得分:1)

& 0xff从数字中取出最后8位(或一个字节)。这样可以确保一次只向文件写入一个字节(在这种情况下,用于小端字节顺序存储)。

0xff是二进制的1111 1111。使用它执行逻辑and将打开1x的所有位,并且位于最后8位内。

例如:

x = 0010 0100 1001 0111
                         &
              1111 1111
    -------------------
    0000 0000 1001 0111