2017-01-18 5 views
0

など:バイトをファイルに書き込むときにCPythonで "&0xff"を使用する理由は何ですか?

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のテキスト/文字列がありますか?

+3

可能な複製(http://stackoverflow.com/questions/10493411/what-is-bit-masking) –

+0

あなたの第二例:


質問は理解しにくいです。とにかく質問ごとに1つの質問をする必要があります。 –

答えて

1

& 0xffは、数字の最後の8ビット(または1バイト)をとります。これにより、ファイルに一度に1バイトしか書き込まないようにします(その場合、リトルエンディアンのバイトオーダーの格納に使用します)。

0xffは、バイナリで1111 1111です。論理andを実行すると、がxにあり、最後の8ビット以内にあるすべてのビットがオンになります。

x = 0010 0100 1001 0111 
         & 
       1111 1111 
    ------------------- 
    0000 0000 1001 0111 
[?何がビットマスキングである]の
関連する問題