What is proofOfWorkLimit? Look at the code below from android bitcoin wallet:

proofOfWorkLimit = Utils.decodeCompactBits(0x1d00ffffL);


And look at the code from bitcoin qt wallet:

static CBigNum bnProofOfWorkLimit(~uint256(0) &gt;&gt; 32);


I assume that in second case ProofOfWorkLimit is 32 "0" and 224 "1" (000000...000111111111....11111111)?

So I don't have an idea how to get first case "0x1d00ffffL" from second case?
In binary "0x1d00ffffL" is 11101000000001111111111111111.

P.S. I have looked in uint256.h. It wasn't helpful.
The first byte, 1D, is the length. The next three bytes are the high bytes of the hash. So we have 00ffff, then we add ff bytes onto the end to get to 29 bytes. Then we're done.

We wind up with 3 bytes of leading zeroes because 32-29 is 3. And we get one byte of zeroes from the second byte of the compact bits. So the final result is 00,00,00,00,ff,ff,ff...