파일에서 10 바이트를 읽어야하고 마지막 4 바이트는 부호없는 정수입니다. 하지만 11 char 바이트 긴 char 배열/포인터가 있어요. 마지막 4 바이트 (끝의 0 문자 제외)를 부호없는 정수로 변환하려면 어떻게해야합니까?C에서 int 4 chars까지
//pesudo code
char *p = readBytesFromFile();
unsigned int myInt = 0;
for(int i = 6; i < 10; i++)
myInt += (int)p[i];
맞습니까? 나에게 맞는 것 같지 않습니다.
'* (int *) (p + 6)'를 시도하십시오. – Athari
'memcpy'를 사용하십시오. '* (int *) (p + 6)'(1)은 정렬 문제를 일으킬 수 있고 (2) 엄격한 앨리어싱을 위반할 수 있습니다. 엔디 언니스도 문제가 될 수 있습니다. –
기본적으로 다른 바이트의 비트를 적절한 위치로 이동해야합니다. 전송 된 값의 endianess에 따라 다름. 루프의 할당은 'myInt = myInt << 8 | static_cast <부호없는 문자> (p [i])'. 또는 루프를 역순으로 반복 할 수도 있습니다. –