2012-07-17 1 views
0

부호없는 문자의 크기를 늘려서 크기보다 큰 정수로 형변환 할 수있는 방법이 있습니까?unsigned char을 256보다 크게 만드는 쉬운 방법은 무엇입니까? 그래서 그것은 정수로 변환 될 수 있습니다

UPDATE :

은 기본적으로 내가 그래서, 그들은 단지 255 번호를 필요로 지금은 모든 포트 번호로 증가 될 필요가 같은 포트 번호가 서명 숯불로 정의 된에 exsisting 시스템을 편집하고있어 내가 참조를 변경하는 파일의 100을 통해 갈 필요없이 크기를 증가의 쉬운 방법을 찾으려고 노력하고있어.

+2

무엇을 하시겠습니까? –

+0

죄송합니다. 내 질문에 편집을 의뢰했습니다! –

+0

'unsigned char'는 256 개의 다른 값인 period만을 저장할 수 있습니다. 그 이상을 원하면 다른 유형을 사용하거나 여분의 정보를 보유 할 다른 변수를 추가해야합니다 ... –

답변

2

아니, 당신은 내장 타입의 크기를 변경할 수 없습니다.

하지만 int 처음에 unsigned char 캐스팅하고 나중에 변경할 수 있습니다

unsigned char val = 25; 
int int_val = val; 
int_val = 1000; 

질문 업데이트

에 따르면 나는 유일한 옵션은 수동으로 유형을 변경하는 것입니다 생각합니다. 그러나 전에 typedef을 만들고 그것을 사용 변경 :

typedef int PortId 

PortId

+0

수동 작업 일 것 같습니다. 오 잘, 시험 할만한 가치가 있었다! –

3

는 C와 unsigned char 교체 ++ 표준은 당신이 구조체에는 사용할 수, 문자의 크기는 그러나 1

수 있음을 알려줍니다

typedef unsigned char data_type; // 1 byte 

에 : 다음은 크기를 변경하기 쉽습니다
typedef unsigned short data_type; // 2 byte on some platforms 
+2

정말로 2 바이트가되기를 원하면'short'가 아니라'uint16_t'가 필요합니다. – Linuxios

+1

'sizeof (char)'는 1 바이트이지만 64 비트 바이트가 될 수 있습니다. –

+1

@JonathanWakely이 경우에는 8 비트 바이트라는 것이 명확 해졌습니다. –

관련 문제