【问题标题】:How to store HEX in a uint8_t array?如何将 HEX 存储在 uint8_t 数组中?
【发布时间】:2017-08-28 11:32:19
【问题描述】:

我想将 HEX 值存储到 uint8_t 数组中。下面是我尝试使用并将其传递给设置资源值的代码:

const static uint8_t PSK_KEY[] = "31383031";
security->set_resource_value(M2MSecurity::Secretkey, PSK_KEY, sizeof(PSK_KEY) - 1);

或者我需要用ASCII设置PSK_KEY吗?

【问题讨论】:

  • 什么意思?您的代码 is 已经在使用 ASCII。 "31383031"
  • 为什么要从密钥大小中减去 1,关于这个例子:docs.mbed.com/docs/mbed-client-guide/en/latest/Howto 它没有完成?
  • 这不是有效的 C 代码。请使用正确的语言标签,不要使用不相关的标签发送垃圾邮件。
  • 请解释一下您想要达到的目标。 PSK_KEY 是字符串 "31383031"。你想把它转换成类似uint8_t whatever[] = {0x31, 0x38, 0x30, 0x31}; 的东西吗?
  • 什么是unit8_t?你的意思是uint8_t

标签: c mbed


【解决方案1】:

这取决于你的意思。

“Store hex”(为什么要大写?)有点不清楚。

如果 PSK 的值是 0x31、0x38、0x30、0x31 这四个字节,那么你需要不同的写法才能得到正确的结果:

static const uint8_t PSK_KEY[] = { 0x31, 0x38, 0x30, 0x31 };

当然这四个都是ASCII,所以你可以用文本表达同样的数据:

static const uint8_t PSK_KE[] = "1801";

【讨论】:

  • @prem 当然,但是 C 中的文字不会使结果成为一个 4 字节数组,其中包含其值是给定值的字节(以十六进制表示)。当然,它将是一个 9 字节的字符串。
【解决方案2】:

你可以使用

PSK_KEY[]= { 0x31,0x38,0x30,0x31}

PSK_KEY[]= { '1','8','0','1'}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多