빅 엔디안 프로세서에서 테스트하지는 않았지만 항상 최소 중요 바이트를 제공합니까?최하위 바이트 얻기
int i = 12345678;
unsigned char c = static_cast<unsigned char>(i);
빅 엔디안 프로세서에서 테스트하지는 않았지만 항상 최소 중요 바이트를 제공합니까?최하위 바이트 얻기
int i = 12345678;
unsigned char c = static_cast<unsigned char>(i);
예, 이것은 항상 최하위 바이트를 제공합니다. C++ 사양 (§ 4.7/2)은 좁은 변환이 항상 원래 정수에 부합하는 가장 작은 값을 모듈로 2 n (여기서 n은 대상 유형의 비트 수)을 돌려줌으로써 가장 중요한 바이트를 삭제 함을 보장합니다.
즉, unsigned char
이 단일 바이트라는 보장은 없습니다. 보장되는 것은 모두 sizeof(char) == 1
입니다. 그러나 문자를 보유 할 수있는 가장 작은 메모리 단위로 바이트를 처리하면 정상적으로 작동합니다.
다음과 같이 작동하지 않습니까?
int i = 12345678;
unsigned char c = (i % 256);
또는
는int i = 12345678;
unsigned char c = (i & 255);
(메타)는 static_cast를 사용하는 경우 당신은 내가 당신이 그것을 할 더 나은 생각하기 때문에 나는 그것을 태그를 다시하지 않을 것이다 C.로 질문을 표시하지한다 (그래서 당신은 태그를 배울 -etiquette :-)) – xanatos