我想将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