저는 C++에서 char와 int 사이의 변환을 원하지만 int 변환에 char 문제가 있습니다.잘못된 결과와 함께 char와 int 사이의 C++ 변환
103과 155 두 개의 숫자로 테스트를했습니다. 103 "char"로 "g"를 입력하고 155로 "φ"를 입력하고 둘 다 맞지만 문제는 문자를 int로 되돌려 놓으려고 할 때입니다. " g "나에게 103 (정확한)을 줘라. 그러나 나는 왜"ø "가 나에게 -101을 주는지 모른다.
숫자를 저장하기 위해 char 변수를 사용하고 있으며 "prinf ("% d ", char [x]);" 번호를 다시 보여줘. 내가 기본 256 문자에 번호를 변환 할이 스크립트
5 = 155 = ø = ø = -101
4 = 103 = g = g = 103
3 = 0 = = = 0
2 = 0 = = = 0
1 = 0 = = = 0
0 = 0 = = = 0
1: = 0
2: = 0
3: = 0
4: = 0
5: g = 103
6: ø = -101
:
#include <cstdlib>
#include <cstdio>
using namespace std;
int numero = 26523;
char *inttochar(int number) {
char *salida;
for (int j=0;j<=5;j++) {
salida[5-j] = number % 256;
printf("%d = %d = %c = %c = %d\n", 5-j, number % 256, number % 256, salida[5-j], salida[5-j]);
number = number/256;
}
return salida;
}
int main(int argc, char** argv) {
char *texto = inttochar(numero);
for (int j=0;j<=5;j++) {
printf("%d: ", j+1);
printf("%c = %d\n", texto[j], texto[j]);
}
return 0;
}
그리고 결과입니다
나는이 테스트 스크립트를했습니다. ¿ 내가 뭘 잘못하고 있니?.
감사합니다. 영어로 유감입니다.
'char'가 서명 된 유형인지 서명되지 않은 유형인지는 구현이 정의됩니다. 귀하의 플랫폼에 서명되어 있습니다. – jrok
또한'char * salida;'는 와일드 포인터이므로 꽤 많은 일이 발생할 수 있습니다 ... –
왜 네임 스페이스가'네임 스페이스 표준을 사용하고 있습니까? '? 나는 실제로 여기에'C++ '코드를 보지 못했다. – crashmstr