【问题标题】:storing input hex values from string in C在C中存储来自字符串的输入十六进制值
【发布时间】:2019-07-22 22:46:25
【问题描述】:

我目前有一个字符串 argv 输入到我的 C 程序(即 ./a "123456")。有什么方法可以在不创建转换表的情况下将此字符串转换为十六进制值(0x123456)?

请注意,我想将字符串直接转换为十六进制并存储以供使用(即“\x12\x34\x56”,而不是转换为 ASCII 十六进制值。

【问题讨论】:

  • 看看strtol
  • "123"的字符串应该写什么? "\x12\x30""\x01\x23",还是别的什么?

标签: c encoding type-conversion hex


【解决方案1】:

在 C 中用于将字符串转换为整数的规范函数 strtol 具有 radix 参数,因此您可以使用:

int hex = strtol(argv[1], NULL, 16);

【讨论】:

  • 不完全确定如何使用 strtol 来做到这一点。我的输入字符串将是 20 个字节(20 个十六进制值,80 位),我需要将它们放在 (uint8_t *) 缓冲区中以供以后使用。
  • @gztes 在这种情况下使用 sscanf 对字符串进行循环,例如
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2021-09-01
  • 2019-03-27
  • 2015-11-20
  • 2020-03-25
  • 2019-10-12
  • 1970-01-01
  • 2019-07-27
相关资源
最近更新 更多