2
Visual Studio 2008 C++ 응용 프로그램에서 IP 주소를 점으로 된 쿼드 표기법의 넓은 문자열에서 inet_aton
과 비슷한 주소로 변환하고 싶습니다.문자열을 네트워크 주소로 변환합니다.
나는이 일을 해요 : 내가 169.254.255.255
같은 주소를 줄 때
DWORD StringToAddress(const std::wstring& address)
{
BYTE a = 0, b = 0, c = 0, d = 0;
swscanf(address.c_str(), L"%u.%u.%u.%u", &a, &b, &c, &d);
return d << 24 | c << 16 | b << 8 | a;
}
불행하게도, 세 번째 쿼드는 0
로 swscanf
하지 255
나옵니다.
내가 잘못 했나요? 이 문제를 해결할 수있는 좋은 방법이 있습니까?
감사합니다, PaulH
나는 아마 그 일을하게 될 겁니다. 그러나 왜'swscanf'가 제대로 작동하지 않는지 궁금합니다. – PaulH
@ PaulH, 아마도'% u'는 바이트보다 큰'unsigned int '값을 반환하기 때문입니다. 대신'U' 대신'a','b','c' 및'd'를 선언하고 마지막 줄에서 낮은 바이트를 마스크하십시오. –
그게 전부 였어. 고맙습니다. – PaulH