【问题标题】:convert std::string to unsigned char [duplicate]将 std::string 转换为无符号字符 [重复]
【发布时间】:2019-05-29 04:07:06
【问题描述】:

我有一个这样的字符串:

std::string s="840D8E88B0AC";

还有一个数组:

char MAC[6];

我想制作这个:

MAC={0x84,0x0D,0x8E,0x88,0xB0,0xAC};

我尝试使用 sscanf() 但我做不到。

sscanf(s.c_str(), "%02X%02X%02X%02X%02X%02X", MAC[0], MAC[1], MAC[2], MAC[3], MAC[4], MAC[5]);

【问题讨论】:

  • 请编辑您的问题以包含minimal reproducible example
  • 建议的副本没有解决此海报所犯的特定错误。
  • @john 它给出了实现既定目标的四五种规范方法。发帖人犯的错误并不是特别重要。重新打开它会适得其反。

标签: c++ hex


【解决方案1】:

应该是(尽管有其他错误)

sscanf(s.c_str(), "%02X%02X%02X%02X%02X%02X", &MAC[0], &MAC[1], &MAC[2], 
    &MAC[3], &MAC[4], &MAC[5]);

sscanf(和变体)需要指针才能更改正在读入的变量。

很惊讶你的编译器没有警告你这个错误。

【讨论】:

  • 这个我已经试过了,还是不行。输出是:
  • @nima:这对我来说看起来不错。有什么不好的地方?
  • 输出是:{-124,13,-114,-120,-80,-84} 我需要正好 {0x84,0x0D,0x8E,0x88,0xB0,0xAC} 甚至 {84 ,0D,8E,88,B0,AC}
  • @nima -124 和 0x84 相同,13 和 0x0D 相同,只是基数不同,符号不同。您必须更清楚自己想要什么,因为目前它没有多大意义
  • 我在visual studio中通过watch查看值。我需要将 MAC 传递给函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 2021-04-21
  • 2021-11-01
  • 2012-06-13
相关资源
最近更新 更多