아래의 코드는 문자에서 ASCII 코드를 추출하는 중입니다. 일반 ASCII 영역의 문자를 변환 할 때 예상 한 값을 얻습니다. 확장 된 지역에서 파운드와 유로를 변환하면 문자를 저장하고있는 INT에 1의 패딩로드가 생깁니다.C++에서 ASCII 코드를 볼 때 예기치 않은 결과가 발생했습니다.
예 : 아래의 출력은 다음과 같습니다
45 (예상대로 아스키 E) 가 FFFFFF80 그것은 나에게 문제를 일으키는 아니에요
하지만 난 그냥 궁금 해서요 (예상하지만, 사람과 패딩으로 확장 ASCII €)는 이런 일이 발생하는 이유 . 코드는 다음과 같습니다.
unsigned int asciichar[3];
string cTextToEncode = "E€";
for (unsigned int i = 0; i < cTextToEncode.length(); i++)
{
asciichar[i] = (unsigned int)cTextToEncode[i];
cout << hex << asciichar[i] << "\n";
}
누구나 설명 할 수 있습니까? 감사합니다.
내가 잘못 생각할 수도 있지만 €은 확장 된 ASCII 문자 인코딩에 있다고 생각하지 않습니다. http://www.asciitable.com/ –
아마 Windows 1252 또는 8 비트 ISO 인코딩 중 하나 일 것입니다. –
ASCII 문자는 '부호없는 정수'가 아닙니다. http : //en.wikipedia.org/wiki/ASCII – Johnsyweb