CString str("192.168.1.2");
BYTE IPAddress[4];
...
怎样产生以下结果:
IPAddress[0]==192
IPAddress[1]==168
IPAddress[2]==1
IPAddress[3]==2字符串转换成数组
BYTE IPAddress[4];
...
怎样产生以下结果:
IPAddress[0]==192
IPAddress[1]==168
IPAddress[2]==1
IPAddress[3]==2字符串转换成数组
CString tmp = str.Left(len);
CString leftStr = str.Right(str.GetLength()-len-1);
通过此方法依次取出没节字符串;并把tmp中内容转换成BYTE类型,然后赋值给BYTE数组。
public class Test { public static void main(String[] args) {
String str="192.168.1.2";
String[] temp = str.split("\\.");
/* for(String str2:temp) {
System.out.println(str2);
}*/
int[] ipAddress = new int[temp.length];
for(int j=0;j<ipAddress.length;j++) {
ipAddress[j] = Integer.parseInt(temp[j]);
}
for(int tt:ipAddress) {
System.out.println(tt);
}
}
}
BYTE ip[4]; *(ULONG*)ip = inet_addr(str1.GetBuffer());
UNICODE用WSAStringToAddress()转换.
CString str(TEXT("192.168.1.2"));
BYTE IPAddress[4];
INT nLen = sizeof(sockaddr);
WSADATA WSAData;
SOCKADDR_IN SockAddr; WSAStartup(MAKEWORD(2, 2), &WSAData);
::WSAStringToAddress(str.GetBuffer(), AF_INET, NULL, (LPSOCKADDR)&SockAddr, &nLen);
*(ULONG*)IPAddress = SockAddr.sin_addr.S_un.S_addr;
这个用法值得学习,比较强悍
char* buf = NULL;
BYTE IPAddress[4] = {0};
#ifdef UNICODE
int len = WideCharToMultiByte(CP_ACP, 0, str, -1, buf, 0, NULL, NULL);
buf = new char[len];
memset(buf, 0, len);
WideCharToMultiByte(CP_ACP, 0, str, -1, buf, len, NULL, NULL);
#else
int len = str.GetLength() + 1;
buf = new char[len];
memset(buf, 0, len);
sprintf(buf, "%s", str);
#endif
SOCKADDR_IN addr;
memset(&addr, 0, sizeof(addr));
addr.sin_addr.S_un.S_addr = inet_addr(buf);
IPAddress[0] = addr.sin_addr.S_un.S_un_b.s_b1;
IPAddress[1] = addr.sin_addr.S_un.S_un_b.s_b2;
IPAddress[2] = addr.sin_addr.S_un.S_un_b.s_b3;
IPAddress[3] = addr.sin_addr.S_un.S_un_b.s_b4; str.Format(_T("%d.%d.%d.%d"), IPAddress[0], IPAddress[1], IPAddress[2], IPAddress[3]);
AfxMessageBox(str);
delete[] buf;
buf = NULL;
CString IP[4];
this->GetDlgItemText(IDC_ID_IPTEXT,str);
for (int i=0;i<4;i++) {
AfxExtractSubString(IP[i],(LPCTSTR)str,i,'.');
}
this->SetDlgItemText(IDC_ID_TEXT1,IP[0]);
this->SetDlgItemText(IDC_ID_TEXT2,IP[1]);
this->SetDlgItemText(IDC_ID_TEXT3,IP[2]);
this->SetDlgItemText(IDC_ID_TEXT4,IP[3]);
socket里面的东西。很好用。
这个很好用。。另外,sscanf也可以。。