2012-04-23 4 views
0

나는 ints i ([0,255])의 목록을 가지고 있으며이 int를 char로 변환하려고합니다.C++ int to char

int i; 
char c = (char)i; 

c (i = 0 일 때)를 인쇄 할 때 나는 해당 ascii 기호를 얻지 못합니다. 매핑을 올바르게 수행하는 방법은 무엇입니까?

+1

ASCII '0'은 널 종결 자이므로 전혀 인쇄되지 않습니다. "0"을 인쇄 하시겠습니까? 그렇다면'c = '0'+ i;'를 할 수 있지만, 9보다 큰 값에 대해서는 무엇을 인쇄하고 싶습니까? –

+0

예 : http://en.wikipedia.org/wiki/Ascii#ASCII_printable_characters –

+0

내가 ints 벡터를 chars 벡터로 비교하고 싶습니다. – Eric

답변

1

ASCII 값을 int 값과 혼합합니다 ... ASCII 테이블을 보면 이해할 수 있습니다. '0'을 인쇄하려면 48 (10 진수) 값을 인쇄해야합니다. 0에서 9까지의 값을 인쇄하려면 int 값에 48을 더하면 ASCII 코드가 올바르게 나타납니다. 한 자리 이상의 값을 인쇄하려면 int에서 여러 ASCII 코드로 변환해야합니다. Google 검색은 이러한 기능을 찾아야합니다.

+0

좋아, 사실이 매핑 기능을 찾고 있습니다. tx. – Eric

0

값 0에 대해 의미있는 ASCII 기호가 있다고 생각하지 않습니다. 이는 NULL 문자이므로 아무 것도 인쇄하지 않아야합니다. i = 97 ('a')과 같이 값을 인쇄 해 보는 것은 어떨까요?

an ASCII table을 살펴보면 모든 ASCII 문자가 의미있는 인쇄 된 값을 갖는 것은 아닙니다.

+0

문제는 다음과 같습니다. 벡터 에서 작업했으며 벡터에서 작업 할 알고리즘은 입니다. 그것을 변환하는 매핑 기능을 싶습니다. 내 int가 [0,255]에 속한다고 가정합니다. – Eric

4

ASCII 0에 대한 기호가 없습니다. 32보다 작은 모든 ASCII 값은 제어 문자입니다.

+2

그 말로는 많은 프로그램이 그것을 나타내는 이스케이프 시퀀스를 허용하므로 문자열 배열을 만들고 이스케이프 시퀀스를 인쇄 할 수 있습니다 ... –