#include<stdio.h>
#ifdef _WIN32
typedefunsigned __int64 uint64_t;
#else
typedefunsignedlonglonguint64_t;
#endif
typedefunsignedintuint32_t;
typedefunsignedshortuint16_t;
typedefunsignedcharuint8_t;
int main(int argc,char*argv[])
{
uint32_t t321, t322, t323;
uint64_t t641, t642, t643;
uint8_t*p;
uint8_t t[64]=
{
0x4E, 0x7C, 0x00, 0x00, 0x00, 0x00,
0x4E, 0x7C, 0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00
};
printf(
"sizeof(uint64_t) = %d\n"
"sizeof(uint32_t) = %d\n"
,sizeof(uint64_t),sizeof(uint32_t));
p = t;
t321 =*(uint32_t*)p; p += 6;
t322 =*(uint32_t*)p; p += 6;
t323 =*(uint32_t*)p; p += 6;
printf("t321[%X].%d t322[%X].%d t323[%X].%d\n"
, t321, t321, t322, t322, t323, t323);
p = t;
t641 =*(uint32_t*)p; p += 6;
t642 =*(uint32_t*)p; p += 6;
t643 =*(uint32_t*)p; p += 6;
#ifdef _WIN32
printf("t641[%I64X].%I64d t642[%I64X].%I64d t643[%I64X].%I64d\n"
, t641, t641, t642, t642, t643, t643);
#else
printf("t641[%llX].%lld t642[%llX].%lld t643[%llX].%lld\n"
, t641, t641, t642, t642, t643, t643);
#endif
t641 = 0x1122334455667788;
#ifdef _WIN32
printf("%I64X %I64d \n", t641, t641);
#else
printf("%llX %lld \n", t641, t641);
#endif
return 0;
}
在进行移植的时候可能用的上的:
#ifdef _WIN32
# define APR_UINT64_T_HEX_FMT "llx"
#else
# define APR_UINT64_T_HEX_FMT "I64x"
#endif
example:
sprintf(buf, "%" APR_UINT64_T_HEX_FMT, var);
#define HOST_WIDEST_INT_PRINT_DEC "%I64d"
#define HOST_WIDEST_INT_PRINT_UNSIGNED "%I64u"
#define HOST_WIDEST_INT_PRINT_HEX "0x%I64x"
(zorru) |