2008-11-02 12 views
2

000080-0007FF 의 범위가 있고 16 진수를 포함하는 char가 해당 범위 내에 있는지 확인하려면 어떻게해야합니까?Char가 범위 내에 있는지 확인

예 C++에서

char t = 0xd790; 

if (t is within range of 000080-0007FF) // true 

답변

8
wchar_t t = 0xd790; 

if (t >= 0x80 && t <= 0x7ff) ... 

, 문자는 정수로 교환 할 수있다 그리고 당신은 직접 값을 비교할 수 있습니다.

char 데이터 형식은 0xFF까지의 값만 보유 할 수 있으므로 wchar_t을 사용했음을 유의하십시오.

+0

나는 그것을 시도하고 경고 : 데이터 형식의 제한된 범위 때문에 비교가 항상 거짓이다. 수정 내용 – BobS

+0

컴파일러가 'char'을 부호가있는 데이터 유형으로 해석하도록 설정되어있는 것처럼 들린다. -128에서 127). 내 대답을 편집 할 때 wchar_t를 사용하십시오. –

+0

wchar_t 이외의 다른 방법이 있습니까? – BobS

3
unsigned short t = 0xd790; 

if (t >= 0x80 && t <= 0x7ff) ... 

숯불이 0xFF로의 최대 값을 가지고 있기 때문에 컴퓨터에서 헥스 (숫자를 인쇄하는 방법에 지나지 않기 때문에 당신은 2

0

보다 더 많은 16 진수로 무엇을 비교하는 데 사용할 수 없습니다 같은 10 진수), 당신은 또한 평범한 오래된 기본 10 정수와 비교할 수 있습니다.

if((t >= 128) && (t <= 2047)) 
{ 
} 

자세히 알아보기.

+0

아니, 나는 동의하지 않을 것이다. 16 진수 값은 읽기 쉽습니다. 16 진수 값에서 비트 패턴을 볼 수 있습니다. –

+0

가독성은 전적으로 상황에 따라 다릅니다. 비트 패턴이 문제의 문제와 관련이 있다면 16 진수가 더 읽기 쉽습니다 (아마도 이것은 OP의 경우입니다). 숫자가 정상적인 항목 수와 비슷할 경우 십진수는 더 읽기 쉽습니다. –