none
请帮忙把下面代码翻译成才c/c++ 不使用stl RRS feed

答案

  • private:
    static cli::array<Byte>^ GetIpAddressAsByteArray(String^ IPAddress)
    {
        cli::array<Byte>^ buffer = gcnew cli::array<Byte>^(4);
        cli::array<String^>^ strArray = IPAddress->Split(safe_cast<String^>(".")->ToCharArray());
        buffer[0] = Convert::ToByte(strArray[0]);
        buffer[1] = Convert::ToByte(strArray[1]);
        buffer[2] = Convert::ToByte(strArray[2]);
        buffer[3] = Convert::ToByte(strArray[3]);
        return buffer;
    }
    



    Please mark the post answered your question as the answer, and click the chartreuse pyramid floating over "Vote as helpful" to mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    • 已标记为答案 Tim Li 2009年8月4日 9:19
    2009年7月28日 5:15
    版主
  • Sorry 凭空写的没有试验
    static unsigned char* GetIpAddressAsByteArray(string IPAddress)
    {
         unsigned char* s = new unsigned char[4];
         int i = 0;
    
         int nPosition = 0;
         while(-1 != IPAddress.find('.')&&i<3)
         {
              nPosition = IPAddress.find('.');
              s[i++] = atoi(IPAddress.substr(0, nPosition).c_str());
              IPAddress = IPAddress.substr(nPosition + 1, IPAddress.length());
         }
         s[i] = atoi(IPAddress.substr(0, IPAddress.length()).c_str());
    	 return s;
    }

    麻烦把正确答案设为解答。
    • 已标记为答案 Tim Li 2009年8月4日 9:19
    2009年7月31日 7:56
    版主

全部回复

  • private:
    static cli::array<Byte>^ GetIpAddressAsByteArray(String^ IPAddress)
    {
        cli::array<Byte>^ buffer = gcnew cli::array<Byte>^(4);
        cli::array<String^>^ strArray = IPAddress->Split(safe_cast<String^>(".")->ToCharArray());
        buffer[0] = Convert::ToByte(strArray[0]);
        buffer[1] = Convert::ToByte(strArray[1]);
        buffer[2] = Convert::ToByte(strArray[2]);
        buffer[3] = Convert::ToByte(strArray[3]);
        return buffer;
    }
    



    Please mark the post answered your question as the answer, and click the chartreuse pyramid floating over "Vote as helpful" to mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    • 已标记为答案 Tim Li 2009年8月4日 9:19
    2009年7月28日 5:15
    版主
  • 谢谢楼主,上面的可以在vc6下面运行吗,貌似是托管的代码吧?


    something is OK.
    2009年7月28日 5:35
  • VC6的话直接调用API,inet_addr.

    用法:
    char ip[] = "192.168.1.111"
    ULONG nIP = ::inet_addr(ip);
    BYTE a[4];

    *((ULONG*)a) = nIP;
    现在a的四个BYTE就是你要的了。
    0xBAADF00D
    2009年7月28日 5:54
    版主
  • 这个转过来后 序列是网络序列而不是主机序列了 。
    something is OK.
    2009年7月28日 7:12
  • static byte* GetIpAddressAsByteArray(string IPAddress)
    {
         byte* s = new byte[4];
         int i = 0;
         std::string IPAddress("1.3.4.5");
         int nPosition = 0;
         while(-1 != IPAddress.find('.')&&i<3)
         {
              nPosition = IPAddress.find('.');
              s[i++] = atoi(IPAddress.substr(0, nPosition).c_str());
              IPAddress = IPAddress.substr(nPosition + 1, IPAddress.length());
         }
         s[i] = atoi(IPAddress.substr(0, nPosition).c_str());
    return s; }

    麻烦把正确答案设为解答。
    2009年7月28日 8:49
    版主
  • 楼上版主得到函数有点问题 如果ipaddress = “192.168.0.224”
    数组最后一个字节会被截断。
    something is OK.
    2009年7月29日 3:33
  • 这个转过来后 序列是网络序列而不是主机序列了 。
    something is OK.

    什么叫网络序列?什么叫主机序列?
    0xBAADF00D
    2009年7月30日 17:41
    版主
  • 这个转过来后 序列是网络序列而不是主机序列了 。
    something is OK.

    什么叫网络序列?什么叫主机序列?
    0xBAADF00D
    。。。貌似LZ没说清楚他要转成什么序列

    just learn
    2009年7月31日 3:49
  • Sorry 凭空写的没有试验
    static unsigned char* GetIpAddressAsByteArray(string IPAddress)
    {
         unsigned char* s = new unsigned char[4];
         int i = 0;
    
         int nPosition = 0;
         while(-1 != IPAddress.find('.')&&i<3)
         {
              nPosition = IPAddress.find('.');
              s[i++] = atoi(IPAddress.substr(0, nPosition).c_str());
              IPAddress = IPAddress.substr(nPosition + 1, IPAddress.length());
         }
         s[i] = atoi(IPAddress.substr(0, IPAddress.length()).c_str());
    	 return s;
    }

    麻烦把正确答案设为解答。
    • 已标记为答案 Tim Li 2009年8月4日 9:19
    2009年7月31日 7:56
    版主