리틀 엔디안 z80-esque 프로세서에서 32 비트 long int msk = 0xFFFFFF00
(서브넷 마스크)이 있습니다. 오늘 아침에 (unsigned char *)&msk
을 void bar(unsigned char * c);
함수에 전달하여이 &msk
값을 통과하여 데이터베이스에 저장하려고하면 endian-ness에 대해 알게되었습니다.int32와 char [4]를 결합 할 때 little-endian-ness를 극복했습니다.
불행히도 z80 프로세서의 리틀 엔디안으로 인해 데이터베이스는 "역방향"값을 저장하고 다른 함수가 바이트를 다시 읽으면 올바른 서브넷 마스크가 아닌 0x00FFFFFF
을 봅니다.
노조와 함께이 주변에 사소한 방법이 있습니까? char[3]
을 현재 내 long int msk
의 LSB에 매핑하고 싶습니다 (char[0]
은 LSB를 얻습니다).
결국 Big-Endian이 좋습니다.
32 비트 정수의 엔디안을 교환하고 있습니다. 그런 접근법을 시도해 보셨습니까? – Ari