다음 코드로 숫자를 16 진수로 변환하려고하는데 문제가 있습니다.이것을 정확히 어떻게 16 진수로 변환 할 수 있습니까?
int numconvert(string hexnum)
{
stringstream converter(hexnum);
unsigned int value = 0;
converter >> hex >> value;
return value;
}
string hexconvert(int hexnum)
{
stringstream ss;
ss << hex << hexnum;
string n;
ss >> n;
return n;
}
는 I는 I가 그 칸으로 변경 및 문자열로 저장하기 hexconvert을 사용 int로 문자열의 입력을 변경할 numconvert를 사용한다.
모든 것이 잘 작동하는 것처럼 보입니다. 그러나 어떤 이유로 4096을 전달하면 4096이 다시 나타납니다. 1000을 예상했지만 왜 나에게 오류가 있는지 잘 모르겠습니다. 저는 4096을주고 16534의 int 값을 반환한다는 것을 알았습니다. 그리고 나서 프로그램은 그것을 16 진수 변환으로 보내고 4096을 돌려줍니다. 이것은 기술적으로 옳은 것이지, 제가 원한 것이 아닙니다.
다른 숫자를 잘 처리하는 것처럼 보입니다. 여기서 내가 뭘 잘못하고 있니?
귀하의 질문에 명확하지 않습니다. "4096을 전달하십시오". 어떤 기능을 전달합니까? "int of 16534"를 반환한다면'numconvert ("4096"), 즉 (16 진수!) "4096"을 (십진수!) 16534로 변환한다고 가정합니다. 설계된대로 작동합니다. "프로그램이이를 16 진수 변환으로 보내면 4096을 반환합니다"라는 말이 맞습니다. 정확하게 (예 :'main()'을 추가하고 예제를 컴파일/재생 가능하게 만드는 것), 관찰 된 출력 및 예상 출력과 관련하여보다 정확히 말하십시오. 게다가'ss.str()'을 고려하십시오. – DevSolar