文字は 1 バイト、整数は 4 バイトです。char[4] からバイト単位で整数にコピーしたい。さまざまな方法を考えましたが、さまざまな答えが得られました。
char str[4]="abc";
unsigned int a = *(unsigned int*)str;
unsigned int b = str[0]<<24 | str[1]<<16 | str[2]<<8 | str[3];
unsigned int c;
memcpy(&c, str, 4);
printf("%u %u %u\n", a, b, c);
出力は 6513249 1633837824 6513249 です
どちらが正しいですか?何がうまくいかないのですか?