C语音如何把字符串转化成16进制数组
在C语言中,可以使用以下代码将一个字符串转换为16进制数组:
#include <stdio.h>
#include <string.h>
void stringToHexArray(const char* str, unsigned char* hexArray, int maxLen) {
int len = strlen(str);
int arrayLen = 0;
for (int i = 0; i < len && arrayLen < maxLen; i += 2) {
sscanf(&str[i], "%2hhx", &hexArray[arrayLen]);
arrayLen++;
}
}
int main() {
const char* str = "48656C6C6F20576F726C64";
unsigned char hexArray[100];
stringToHexArray(str, hexArray, sizeof(hexArray));
for (int i = 0; i < strlen(str) / 2; i++) {
printf("%02X ", hexArray[i]);
}
return 0;
}
在上述代码中,stringToHexArray 函数接受一个字符串 str,一个用于存储转换后的16进制数组的数组 hexArray,以及最大长度 maxLen。
函数首先获取字符串的长度 len,然后在循环中每次处理两个字符(每个字符表示一个16进制数),使用 sscanf 函数将字符转换为对应的16进制数,并存储到 hexArray 中。同时,使用 arrayLen 变量来记录实际转换后的数组长度。
在 main 函数中,我们定义了一个字符串 str,并声明一个足够大的 hexArray 数组。然后调用 stringToHexArray 函数将字符串转换为16进制数组,并使用循环遍历打印数组中的元素。
以上代码输出结果为:
48 65 6C 6C 6F 20 57 6F 72 6C 64
其中每两个数字表示一个16进制数
原文地址: https://www.cveoy.top/t/topic/iw8m 著作权归作者所有。请勿转载和采集!