#include <stdio.h>
#include <stdint.h>
int main( void ) {
int i;
uint64_t x = 0xEFCDAB01 ;
printf ( "binary input as a single integer: %08lX\n " , x
) ;
printf ( "binary input as a sequence of integer bytes: " ) ; for ( i = 0 ; i < 4 ; ++ i)
printf ( "%02hhX" , ( ( char * ) & x
) [ i
] ) ;
x = ( ( x & 0x00000000ffff0000LL) << 16 ) | ( x & 0x000000000000ffffLL) ;
x = ( ( x & 0x0000ff000000ff00LL) << 8 ) | ( ( x & 0x000000ff000000ffLL) >> 0 ) ;
x = ( ( x & 0x000f000f000f000fLL) << 8 ) | ( ( x & 0x00f000f000f000f0LL) >> 4 ) ;
x = ( x + 0x3030303030303030LL) +
( ( ( x + 0x0606060606060606LL) & 0x1010101010101010LL) >> 4 ) * 7 ;
printf ( "hex output as a single integer: %016lX\n " , x
) ;
printf ( "hex output as a sequence of chars: " ) ; for ( i = 0 ; i < 8 ; ++ i)
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCmludCBtYWluKHZvaWQpIHsKCWludCBpOwogICAgdWludDY0X3QgeCA9IDB4RUZDREFCMDE7CiAgICAKICAgIHByaW50ZigiYmluYXJ5IGlucHV0IGFzIGEgc2luZ2xlIGludGVnZXI6ICUwOGxYXG4iLCB4KTsKICAgIAogICAgcHJpbnRmKCJiaW5hcnkgaW5wdXQgYXMgYSBzZXF1ZW5jZSBvZiBpbnRlZ2VyIGJ5dGVzOiAiKTsKICAgIGZvciAoaSA9IDA7IGkgPCA0OyArK2kpCiAgICAJcHJpbnRmKCIlMDJoaFgiLCAoKGNoYXIgKikmeClbaV0pOwogICAgcHV0Y2hhcignXG4nKTsKCQogICAgeCA9ICgoeCAmIDB4MDAwMDAwMDBmZmZmMDAwMExMKSA8PCAxNikgfCAoeCAmIDB4MDAwMDAwMDAwMDAwZmZmZkxMKTsKCXggPSAoKHggJiAweDAwMDBmZjAwMDAwMGZmMDBMTCkgPDwgOCkgIHwgKCh4ICYgMHgwMDAwMDBmZjAwMDAwMGZmTEwpID4+IDApOwoJeCA9ICgoeCAmIDB4MDAwZjAwMGYwMDBmMDAwZkxMKSA8PCA4KSAgfCAoKHggJiAweDAwZjAwMGYwMDBmMDAwZjBMTCkgPj4gNCk7Cgl4ID0gKHggKyAweDMwMzAzMDMwMzAzMDMwMzBMTCkgKwoJCSgoKHggKyAweDA2MDYwNjA2MDYwNjA2MDZMTCkgJiAweDEwMTAxMDEwMTAxMDEwMTBMTCkgPj4gNCkgKiA3OwogICAgCiAgICBwcmludGYoImhleCBvdXRwdXQgYXMgYSBzaW5nbGUgaW50ZWdlcjogJTAxNmxYXG4iLCB4KTsKICAgIAogICAgcHJpbnRmKCJoZXggb3V0cHV0IGFzIGEgc2VxdWVuY2Ugb2YgY2hhcnM6ICIpOwogICAgZm9yIChpID0gMDsgaSA8IDg7ICsraSkKICAgIAlwdXRjaGFyKCgoY2hhciAqKSZ4KVtpXSk7CiAgICBwdXRjaGFyKCdcbicpOwogICAgCglyZXR1cm4gMDsKfQ==