2011-02-20 6 views
1

빅 엔디안 프로세서에서 테스트하지는 않았지만 항상 최소 중요 바이트를 제공합니까?최하위 바이트 얻기

int i = 12345678; 
unsigned char c = static_cast<unsigned char>(i); 
+1

(메타)는 static_cast를 사용하는 경우 당신은 내가 당신이 그것을 할 더 나은 생각하기 때문에 나는 그것을 태그를 다시하지 않을 것이다 C.로 질문을 표시하지한다 (그래서 당신은 태그를 배울 -etiquette :-)) – xanatos

답변

5

예, 이것은 항상 최하위 바이트를 제공합니다. C++ 사양 (§ 4.7/2)은 좁은 변환이 항상 원래 정수에 부합하는 가장 작은 값을 모듈로 2 n (여기서 n은 대상 유형의 비트 수)을 돌려줌으로써 가장 중요한 바이트를 삭제 함을 보장합니다.

즉, unsigned char이 단일 바이트라는 보장은 없습니다. 보장되는 것은 모두 sizeof(char) == 1입니다. 그러나 문자를 보유 할 수있는 가장 작은 메모리 단위로 바이트를 처리하면 정상적으로 작동합니다.

+0

@templatetypedef :'unsigned char' 또한 싱글 바이트입니다. $ 5.3.3/1 – Nawaz

+0

@ Nawaz를 참조하십시오. 그러나 표준은 그것을 보장하지 않습니다. – user32344

+0

@ user32344 : 참고 자료도 게시했습니다! – Nawaz

0

다음과 같이 작동하지 않습니까?

int i = 12345678; 
unsigned char c = (i % 256); 

또는

int i = 12345678; 
unsigned char c = (i & 255); 
관련 문제