nRF24L01+ and RF24 library confusion

Hello,

I have recently acquired the nRF8001 arduino shield from nordic semiconductor that interfaces the nRF24L01+ with the Arduino. I have downloaded the RF24 library from Maniacbug (Getting Started with nRF24L01+ on Arduino | maniacbug) and I am reading through the header and function files to gain an understanding of how the system operates.

My confusion begins in the getting started file where the pipe addresses are defined as follows:
// Radio pipe addresses for the 2 nodes to communicate.
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

And then these values are called in the open reading pipe function:
radio.openReadingPipe(1,pipes[1]);

-And from the .cpp file, the open Reading pipe is defined as follows:
void RF24::openReadingPipe(uint8_t child, uint64_t address)
{
// If this is pipe 0, cache the address. This is needed because
// openWritingPipe() will overwrite the pipe 0 address, so
// startListening() will have to restore it.
if (child == 0)
pipe0_reading_address = address;

if (child <= 6)
{
// For pipes 2-5, only write the LSB
if ( child < 2 )
write_register(pgm_read_byte(&child_pipe[child]), reinterpret_cast<const uint8_t*>(&address), 5);
else
write_register(pgm_read_byte(&child_pipe[child]), reinterpret_cast<const uint8_t*>(&address), 1);

write_register(pgm_read_byte(&child_payload_size[child]),payload_size);

// Note it would be more efficient to set all of the bits for all open
// pipes at once. However, I thought it would make the calling code
// more simple to do it this way.
write_register(EN_RXADDR,read_register(EN_RXADDR) | _BV(pgm_read_byte(&child_pipe_enable[child])));
}
}

I do not understand why the pipe addresses are defined as such. By examining the nRF24L01 specification, the pipe addresses are actually defined as:
(RX_DADR_P0): 0x7878787878
(RX_DADR_P1): 0xB3B4B5B6F1
(RX_DADR_P2): 0xB3B4B5B6CD
... and so on.

Why on Earth do these addresses not match up? Where are the values defined in the pipes array coming from?

Answer if possible, thanks.
-Daniel

Did you ever get a solution/reason for this at all?

Pipe addresses are 6 byte long.
(Five of the 7 address registers share the top 5 byte.)

The ManiacBug library stores the addresses in 8 bytes (for notational convenience).

Could you please specify what confuses you?