2014-04-10 123 views
2

我想将uint8转换为string以将其与另一个进行比较。我的功能得到我的Mac Address,现在我想保存在一个字符串。将uint8转换为字符串

int main(int argc, char *argv[]) 
{ 
    kern_return_t kernResult = KERN_SUCCESS; 
    io_iterator_t intfIterator; 
    UInt8   MACAddress[kIOEthernetAddressSize]; 


    kernResult = FindEthernetInterfaces(&intfIterator); 

    if (KERN_SUCCESS != kernResult) { 
     // printf("FindEthernetInterfaces returned 0x%08x\n", kernResult); 
    } 
    else { 
     kernResult = GetMACAddress(intfIterator, MACAddress, sizeof(MACAddress)); 

     if (KERN_SUCCESS != kernResult) { 
     // printf("GetMACAddress returned 0x%08x\n", kernResult); 
     } 
     else { 
      printf("This system's built-in MAC address is %02x:%02x:%02x:%02x:%02x:%02x.\n", 
        MACAddress[0], MACAddress[1], MACAddress[2], MACAddress[3], MACAddress[4], MACAddress[5]); 
     } 
    } 

    (void) IOObjectRelease(intfIterator); // Release the iterator. 

    return kernResult; 
} 

我该怎么办?我一直在寻找帮助,但没有任何工作。我在Xcode上。

+2

[性病:: to_string(http://www.cplusplus.com/reference/串/ to_string /)? –

+2

你需要转换吗?你不能只比较一下'UInt8'的数组吗? –

回答

3

实际上,您将uint8_t的数组转换为字符串。该规范的方法是使用字符串流:

std::stringstream ss; 
for (size_t i = 0; i < 6; ++i) { 
    ss << MACAddress[i]; 
    if (i != 5) ss << ":"; 
} 
std::string MACstring = ss.str(); 

你可能避免这种通过使用to_string和串联:

std::string MACstring; 
for (size_t i = 0; i < 6; ++i) { 
    MACstring += std::to_string(MACAddress[i]); 
    if (i != 5) MACstring += ":"; 
} 
+0

谢谢,这工作! –

+0

现在我遇到了一个问题,当我在字符串中存储'uint8_t'时,它将我的十六进制数转换为小数。输出如下所示:MAC = 68:a8:6d:31:af:a8 MAC STRING:104:168:109:49:175:168 –

+1

'ss << std :: hex << MACAddress [i]; ' –