我想將char
轉換爲特定格式。將char轉換爲具有特定格式的uint8_t數組C
char *hexstring = "e0606664387d";
應該是這樣的:
uint8_t mac[] = { 0xe0, 0x60, 0x66, 0x64, 0x38, 0x7d };
喜歡的東西:
uint8_t mac[12];
char *hexstring = "e0606664387d";
mac_filter[0] = "{ ";
int i;
for (i = 0; i < (strlen(hexstring)/2); i++) {
sscanf(hexstring + 2*i, "%02x ", &mac[i]);
if (i < (strlen(hexstring)/2) - 1){
mac[i] = printf("0x%02x, ", mac[i]);
}
else{
mac[i] = printf("0x%02x", mac[i]);
}
}
mac[i + 1] = printf(" }");
但是,當然,這是不行的!
不要使用'sscanf'但提取個人十六進制字符串( 「E0」, 「60」, 「66」 等),並使用變換他們['與strtol '](http://www.cplusplus.com/reference/cstdlib/strtol/)。我應該不超過8行代碼。 –
只是注意到:使用'printf'確實不是你需要的東西。 –
目標字符串是否也是字符串格式呢?因爲'uint8_t'暗示它應該是原始數據格式?如果它是一個字符串,爲什麼要使用'uint8_t'? – Lundin