2017-08-28 175 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'}