c语言 将字符串00:18:01:00:02:09 30:60:0A:81:A8:1D 存入数组中
时间: 2024-06-17 19:01:59 浏览: 198
在C语言中,将两个十六进制字符串存储在一个二维字符数组中,我们需要先将每个字符串转换为二进制形式,然后按照每个字符串的长度分配内存。这里假设每个字符串由16位组成(即每个字符占用2个字节)。以下是如何实现的:
首先,定义一个二维字符数组来存储这些字符串,每行代表一个字符串,每列代表一个字符:
```c
#include <stdio.h>
#include <string.h>
#define STRING_SIZE 16 // 假设每个字符串16个字符
#define ARRAY_ROWS 2
char hexArray[ARRAY_ROWS][STRING_SIZE / 2 + 1]; // 字符数组,每行16/2+1(因为每个十六进制字符占半个字节)
int main() {
char hexStr1[] = "00:18:01:00:02:09";
char hexStr2[] = "30:60:0A:81:A8:1D";
// 分别将字符串转换为二进制并存入数组
for (int i = 0; i < strlen(hexStr1); i += 2) {
unsigned short int val1 = (unsigned short int)(hexStr1[i] - '0') << 4 | (hexStr1[i + 1] - '0');
sprintf(hexArray + i / 2, "%02x", val1);
}
for (int i = 0; i < strlen(hexStr2); i += 2) {
unsigned short int val2 = (unsigned short int)(hexStr2[i] - '0') << 4 | (hexStr2[i + 1] - '0');
sprintf(hexArray + i / 2, "%02x", val2);
}
printf("存储后的字符串数组:\n");
for (int i = 0; i < ARRAY_ROWS; i++) {
printf("%s\n", hexArray[i]);
}
return 0;
}
```
[^1]
阅读全文