2017-08-28 100 views
-2

我想将十六进制值存储到uint8_t数组中。下面是我尝试使用,并通过它来设置资源价值的代码:如何在uint8_t数组中存储HEX?

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

或者我需要设置在ASCII的PSK_KEY

+1

你是什么意思?您的代码已经使用ASCII。 '“31383031”' – Lundin

+0

为什么你从密钥大小减去1,涉及到这个例子:https://docs.mbed.com/docs/mbed-client-guide/en/latest/Howto/它没有完成? –

+1

这是无效的C代码。请使用正确的语言标签,并且不要使用与标签无关的垃圾邮件。 – Gerhardh

回答

2

这取决于你的意思。

“存储十六进制”(为什么你写在大写?)有点不清楚。

如果PSK的值是四个字节0​​X31,0x38,为0x30,0X31那么你需要不同的看法写来获得正确的结果:

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

这四个都是ASCII,所以你可以表示与文字相同的数据:

static const uint8_t PSK_KE[] = "1801"; 
+0

实际上“31383031”是十六进制格式 – prem

+0

@prem当然,但是C中的文字不会使结果成为一个4字节的数组,它的值是给定的值(以十六进制表示)。当然,它将是一个9字节的字符串。 – unwind

0

您可以使用

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

OR

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