C语言 HEX格式字符串比较
时间: 2023-10-08 10:06:27 浏览: 171
在 C 语言中,可以使用 `strcmp()` 函数比较两个字符串是否相等。但是,如果需要比较的是 HEX 格式的字符串,需要先将其转换为二进制数据,然后再进行比较。
以下是一个比较 HEX 格式字符串的示例代码:
```c
#include <stdio.h>
#include <string.h>
// 将 HEX 格式字符串转换为二进制数据
void hex2bin(char *hex, unsigned char *bin, size_t len) {
size_t i;
for (i = 0; i < len; i++) {
sscanf(hex + (i * 2), "%2hhx", &bin[i]);
}
}
// 比较两个 HEX 格式字符串
int hexcmp(char *hex1, char *hex2) {
size_t len1 = strlen(hex1) / 2, len2 = strlen(hex2) / 2;
if (len1 != len2) {
return 1;
}
unsigned char bin1[len1], bin2[len2];
hex2bin(hex1, bin1, len1);
hex2bin(hex2, bin2, len2);
return memcmp(bin1, bin2, len1);
}
int main() {
char hex1[] = "48656c6c6f20576f726c64"; // "Hello World" 的 HEX 格式
char hex2[] = "68656c6c6f20576f726c64"; // "hello World" 的 HEX 格式
if (hexcmp(hex1, hex2) == 0) {
printf("两个字符串相等\n");
} else {
printf("两个字符串不相等\n");
}
return 0;
}
```
在上面的代码中,`hex2bin()` 函数将 HEX 格式字符串转换为二进制数据,`hexcmp()` 函数比较两个 HEX 格式字符串的二进制数据是否相等,最终通过 `memcmp()` 函数实现二进制数据的比较。
阅读全文