gpt4 book ai didi

c++ - 将十六进制值保存到 C++ 字符串

转载 作者:太空狗 更新时间:2023-10-29 19:39:38 25 4
gpt4 key购买 nike

我有一个简单的问题,但无法在互联网上找到答案。我正在使用 Windows 的 native WiFi API 并尝试获取接入点的 MAC。

在 WLAN_BSS_ENTRY 类型的结构中有一个名为 dot11Bssid 的字段,它基本上是一个包含 6 个无符号字符的数组。

我想做的是将 MAC 地址放在 std::string 中,如下所示:'AA:AA:AA:AA:AA:AA'。

我可以这样打印地址:

for (k = 0; k < 6; k++) 
{
wprintf(L"%02X", wBssEntry->dot11Bssid[k]);
}

但我无法找到将这些值移动到具有上述格式的字符串的方法。

感谢您的帮助,如果您想知道我为什么要在字符串中使用它,我需要将它与以这种方式格式化的字符串进行比较。提前感谢您的宝贵时间。

最佳答案

std::ostringstream(如前所述)与 IO manipulators 一起使用. For example :

#include <iostream>
#include <sstream>
#include <ios>
#include <iomanip>
#include <string>

int main()
{
unsigned char buf[] = { 0xAA, 0xD1, 0x09, 0x01, 0x10, 0xF1 };

std::ostringstream s;
s << std::hex << std::setfill('0') << std::uppercase
<< std::setw(2) << static_cast<int>(buf[0]) << ':'
<< std::setw(2) << static_cast<int>(buf[1]) << ':'
<< std::setw(2) << static_cast<int>(buf[2]) << ':'
<< std::setw(2) << static_cast<int>(buf[3]) << ':'
<< std::setw(2) << static_cast<int>(buf[4]) << ':'
<< std::setw(2) << static_cast<int>(buf[5]);

std::cout << "[" << s.str() << "]\n";

return 0;
}

关于c++ - 将十六进制值保存到 C++ 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11181251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com