Как мы все знаем, каждый печатный символ имеет свое значение ascii. Я пытаюсь преобразовать значение ascii из 8 символов в 64-битное целое число, но оно копирует только 32 бита.
char * ch = "AAAABBBB";
unsigned long int i;
//copy charater's ascii to 64 bits int
memcpy(&i, ch, 8);
printf("integer hold: 0x%x\n", i);
Что-то не так с этим кодом?
Результат, который я ожидаю, был:
integer hold: 0x4141414142424242
но вывод был:
integer hold: 0x41414141
%x
дляunsigned int
, а неunsigned long int
. Несоответствия всегда не определены, даже если некоторые или все реализации делают что-то разумное. Я возьму вывод предупреждений и вставлю сюда, когда в следующий раз буду за компьютером. - person Carl Norum   schedule 06.02.2013%x
на%lx
. - person Carl Norum   schedule 06.02.2013-W
. Эти сообщения выводились по умолчанию с помощью GCC 4.2.1 (я знаю, старый, но я был на Mac) и clang 3.2. - person Carl Norum   schedule 06.02.2013