C++ 将 mac id 字符串转换为 uint8_t 数组

2023-12-13

我想从命令行读取 mac id 并将其转换为数组uint8_t在结构中使用它的值。我无法让它工作。我有一个 mac id 分割的字符串向量:我想用stringstream转换他们没有运气。我缺少什么?

int parseHex(const string &num){
  stringstream ss(num);
  ss << std::hex;
  int n;
  ss >> n;  
  return n;
}

uint8_t tgt_mac[6] = {0, 0, 0, 0, 0, 0};
  v = StringSplit( mac , ":" );
  for( int j = 0 ; j < v.size() ; j++ ){
    tgt_mac[j] = parseHex(v.at(j)); 
  }

我讨厌以这种方式回答这个问题,但是sscanf()可能是解析 MAC 地址的最简洁的方法。它处理零/非零填充、宽度检查、大小写折叠以及所有其他没人喜欢处理的东西。无论如何,这是我的不太 C++ 版本:

void
parse_mac(std::vector<uint8_t>& out, std::string const& in) {
    unsigned int bytes[6];
    if (std::sscanf(in.c_str(),
                    "%02x:%02x:%02x:%02x:%02x:%02x",
                    &bytes[0], &bytes[1], &bytes[2],
                    &bytes[3], &bytes[4], &bytes[5]) != 6)
    {
        throw std::runtime_error(in+std::string(" is an invalid MAC address"));
    }
    out.assign(&bytes[0], &bytes[6]);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 将 mac id 字符串转换为 uint8_t 数组 的相关文章

  • 如何使用 ILoggerFactory 记录 Polly 的重试

    或者 如何从静态方法记录 From https github com App vNext Polly https github com App vNext Polly你有这样的例子 其中记录器神奇地可用 Policy Timeout 30
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • 不使用 length() 方法的字符串长度[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何在不使用字符串的情况下找到字符串的长度length String类的方法 str toCharArray length应该管用 或者怎么
  • 在 DataGridView 中隐藏行非常慢

    我在 Winforms 应用程序中有一个 DataGridView 大约有 1000 行 未绑定 和 50 列 隐藏一列需要整整 2 秒 当我想隐藏大约一半的行时 这就成为一个问题 private void ShowRows string
  • 操作/Lambda 表达式内存管理问题

    我将一个操作存储在局部变量中 然后在该局部变量超出范围后使用 使用前是否有被清理的危险 这是一个例子 public List GetMaps Action
  • Confuser .NET 混淆器。安全吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我目前正在开发一个应用程序 其中阻止用户反编译代码非常重要 现在 我意识到 如果由经验丰富的程序员执行 大多数 exe 都是可反编译的
  • 在不使用 ncurses 的情况下用 C/C++ 编写“真正的”交互式终端程序,例如 vim、htop...

    不 我不想使用ncurses 因为我想了解如何 终端可以工作 并且我自己编程也很有趣 没有 必须是可移植的 它必须只能在基于 linux xterm 的终端仿真器上工作 我想做的是编写一个交互式终端应用程序 例如 htop 和 vim 我的
  • 无缝滚动瓷砖地图

    我正在开发一个自上而下的角色扮演游戏 并且想要实现无缝滚动地图 也就是说 当玩家探索世界时 地图之间没有加载屏幕 也没有通往下一个区域的 门 我有两种方法可以打破世界 在顶层 我有 区域 它只是 9 个 地图 的集合 这些区域仅由目录表示
  • 有没有办法将 boost::json::serializer 切换为美化输出?

    Using boost json serializer如中的示例所示文档 快速查看 http vinniefalco github io doc json json usage quick look html以紧凑格式保存 json tre
  • 求一个数的因数。无法得到准确的结果

    有人可以帮助纠正我的算法吗 我已经对几个数字进行了测试 但它没有输出完整的因式分解 对于具有大量因子的数字 它完全失败 int num 20 for int i 2 i lt num i if num i 0 cout lt lt i lt
  • 为什么replaceAll在这行代码中不起作用? [复制]

    这个问题在这里已经有答案了 String weatherLocation weatherLoc 1 toString weatherLocation replaceAll how weatherLocation replaceAll wea
  • 函数参数评估顺序[重复]

    这个问题在这里已经有答案了 在 C 和 C 中 函数参数的求值是否有固定的顺序 我的意思是 标准怎么说 是吗left to right or right to left 我从书中得到的信息令人困惑 是否有必要function call应该使
  • SQL参数化查询不显示结果

    我的 DataAcess 类中有以下函数 但它没有显示任何结果 我的代码如下 public List
  • TreeView:仅在子节点中存在复选框

    我需要一个树视图控件 根节点没有复选框 只有图像 所有子节点都有一个复选框 图像 C net 2 0 winforms 不是 wpf WinForms树视图默认不支持混合复选框 非复选框节点 您可以在树视图上全局启用复选框 并使用以下命令在
  • 非静态类中的静态方法和静态类中的静态方法有什么区别?

    我有两个班级A级和B级 static class ClassA static string SomeMethod return I am a Static Method class ClassB static string SomeMeth
  • EWS - 给予预约,获取预约的所有者副本

    在 EWS 中进行预约后 是否可以获得所有者的副本 例如 如果我登录为user1 我有user1创建的约会的副本user2 我有冒充权 我要编辑user2预约的副本 我怎样才能获得user2 s copy 您可以使用 PidLidClean
  • 参数数量在编译时确定的 Lambda 函数

    我想声明一个带有 N 个参数的 lambda 函数 其中 N 是模板参数 就像是 template
  • 为什么调试器只显示数组指针中的一个元素?

    首先 我知道new是执行此操作的 C 方法 我只是表明有不止一种方法可以重现此错误 而且两种方法都令人难以置信的令人沮丧 我有两种形式的源文件 我正在尝试调试另一个编程作业 但我并没有寻求帮助 基本上 我正在尝试重新实施set作为一个类 具
  • 将数据框中的每个 x 个字符拆分为字符串

    我知道这里有一些关于每隔一段时间分割一个字符串的答案nth字符 例如this one https stackoverflow com questions 23208490 split each character in r and this
  • C# amo 获取角色完整

    我正在开发一个 SSAS 项目 其中除其他事项外 我需要获取 C 中表格多维数据集的完整用户列表 目前我让它以这样的方式工作 我可以获得角色 但数据不完整 当我调用 Server Database Roles 为了便于阅读而简化 属性并枚举

随机推荐

  • Hibernate 映射包

    我正在使用 Hibernate 注释 在我的所有模型类中 我都这样注释 Entity Table public class SomeModelClass 我的 hibernate cfg xml 是
  • SQL CLR 拆分 UDF 中的标识列

    如何使用标准 SQL CLR Split UDF 返回标识列 例如下面的代码将返回一个表 其中字符串值按分隔符分隔 我还需要以某种方式返回标识列
  • 禁用传单绘制“删除”按钮

    如何禁用 删除删除按钮传单抽奖编辑工具栏 编辑 按钮应保持启用状态 关于章节中的文档禁用工具栏项您可以执行以下操作 map addControl new L Control Draw edit featureGroup drawnItems
  • HTML5 将画布保存为 PNG

    我按照这个示例将画布保存到 PNG 文件 http greenethumb com article 1429 user friend image saving from the canvas 我的问题 下载的文件已损坏 当我在记事本中打开它
  • 为什么调试器不会将 win32 计时器回调中引发的未处理异常视为未处理异常?

    我一直在追踪工作中一个非常阴险的错误 似乎导致我一直在追踪的非常奇怪的行为的事件似乎是在处理计时器回调时引发的异常 我的任何代码都没有处理该异常 因此我希望调试器能够收到未处理异常的通知 并通过一个令人讨厌的弹出窗口提醒我 不 相反 第一次
  • 有没有办法访问向量中的索引

    我需要访问向量内的索引 单个值 我认为它会类似于 v1 lt c a b c d e v1 3 h 但这似乎根本不起作用 其他人知道该怎么做吗 编辑 好吧 回答你的一些问题 这是我想要实现的总体目标的大图 MyDataR1 lt scan
  • 多线程签名生成C#

    我正在使用符合 PKCS11 标准的加密设备来保护我的私钥 加密设备每秒能够生成 500 个 RSA 2048 位签名 我用 C NET 编写了一个与 PKCS11Interop Wrapper 交互的应用程序 这是我的代码 region
  • Pythonic / Panda 方式创建 Groupby 函数

    我对编程相当陌生 正在寻找一种更Pythonic 的方法来实现一些代码 这是虚拟数据 df pd DataFrame Category np random choice Group A Group B 10000 Sub Category
  • MSBuild 条件执行?

    我正在使用 E g
  • 如何在 Swift 中使带有循环的函数异步?

    我正在为图书馆创建一个应用程序 我正在尝试获取用户从 Firebase 签出的所有书籍 但我尝试使该函数与 DispatchGroup 异步似乎不起作用 我怀疑这是因为函数内部发现了 for in 循环 func fetchHistory
  • CSS固定标题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我正在尝试将标题固定在顶部 我看过其他帖子并确信我做得正确 这是标题的 CSS header width 100 position fixed top 0px 由于某种原因
  • 验证字符串仅包含 Ruby 中允许的字符

    如何测试 Ruby 字符串是否仅包含特定字符集 例如 如果我允许的字符集是 AGHTM 加数字0 9 字符串 MT3G22AH is valid 字符串 TAR34 is invalid 因为R 一个非常惯用的非正则表达式解决方案是使用字符
  • Cocoapods:未找到库

    我正在尝试运行 Cocoapods 项目并收到以下错误 我尝试过了pod deintegrate进而pod install但它仍然存在 我也尝试删除pod debug xcconfig文件来自Project gt Info gt Confi
  • Spring 数据出现 ne04j 错误...检索路径时出错

    我将 spring 数据与 neo4j 一起使用 I used Query注解将查询放置在存储库中 查询如下 Query value START me node 0 friend node 1 MATCH p shortestPath me
  • 空手道 + 黄瓜报告缺少所调用场景响应的文档字符串

    Cucumber 报告缺少来自调用场景的响应的文档字符串 在给定的场景中 我使用 Call 调用多个场景 它的打印有时会随机响应所调用的场景 有时则不会 这阻碍了我们在测试报告中可视化API之间的数据流 尽管空手道日志有来自该调用场景的响应
  • 避免文本区域行/列错误?

    我正在使用几页验证工具我遇到的一个问题是他们告诉我 textarea 必须有 rows 和 cols 属性 如果我在 CSS 中设置它或使用 display none 并使用它来保存原始文本数据 我可以做一些跳过的事情吗 每次我使用它时 似
  • 删除缺失超过 x% 的列/行

    我想删除所有超过 50 的列或行NAs 在数据框中 这是我的解决方案 delete columns with more than 50 missings miss lt c for i in 1 ncol data if length wh
  • 如何创建一个通用例程来计时方法?

    我需要测量应用程序上下文中许多不同方法的执行情况 NET 当然有 Stopwatch 类 它允许人们使用它的 Start 和 Stop 方法轻松地对一段代码进行计时 然而 以正常方式使用 Stopwatch 类需要我用 Stopwatch
  • 如何等待所有线程完成工作?

    我有以下脚本 不参考内容 import thread def func1 arg1 arg2 print Write to CLI def verify result func1 for in range 4 thread start ne
  • C++ 将 mac id 字符串转换为 uint8_t 数组

    我想从命令行读取 mac id 并将其转换为数组uint8 t在结构中使用它的值 我无法让它工作 我有一个 mac id 分割的字符串向量 我想用stringstream转换他们没有运气 我缺少什么 int parseHex const s