나는 메모리라는 큰 배열의 배열을 가지고 있으며, 그 중 8 개를 uint64_t로 변환하려고합니다. 빅 엔디안으로 번호를 인쇄하려고합니다.바이트 배열을 uint64_t로 변환 하시겠습니까?
지금까지이 있습니다
이printf("0x%x", value);
출력은 0x55667788
,하지만 난 출력이 0x1122334455667788
할 것을 권장합니다
uint64_t value = (uint64_t)(memory[256]) | //location contains byte 88
(uint64_t)(memory[257]) << 8 | //77
(uint64_t)(memory[258]) << 16 | //66
(uint64_t)(memory[259]) << 24 | //55
(uint64_t)(memory[260]) << 32 | //44
(uint64_t)(memory[261]) << 40 | //33
(uint64_t)(memory[262]) << 48 | //22
(uint64_t)(memory[263]) << 56; //11
나는과 같이 인쇄 할 수 있습니다.
0x1122334455667788
을 인쇄하려면 위 코드를 어떻게 고칠 수 있습니까?
솔루션 : 일 필요가 인쇄 문 :
printf("0x%lx", value);
컴파일러에서 경고 메시지가 표시됩니까? –
나는 abt 이것을 모른다.. 그러나 나는 유사한 문제를 여기에서 찾아 냈다 ... http://stackoverflow.com/questions/4142251/convert-array-of-8-bytes-to-signed-long-in-c –
나는 하나도 안 먹어. –