gpt4 book ai didi

c - 如何从字符串中获取十六进制值?

转载 作者:太空宇宙 更新时间:2023-11-04 04:18:29 25 4
gpt4 key购买 nike

我有一个带有输入参数“text”的函数,它由一个字符串组成,该字符串包含未知数量的由空格分隔的 2 个字符的十六进制数字。我需要读取它们并将它们放在单独的数组索引中,或者在 for 循环中读取它们并一一处理它们。这些值中的每一个都代表一个加密的字符(十六进制值是字符的 ascii 值)。我怎么能那样做?我想我应该使用 sscanf();但我不知道该怎么做。

char* bit_decrypt(const char* text){
int size=strlen(text)/3;
unsigned int hex[size];
char*ptr;
for(int i=0; i<size+1; i++){
hex[i] = strtoul(text, &ptr, 16);
printf("%x ",hex[i]);
}
return NULL;
}

output is: "80 80 80 80 80 80 80 80 80 80 80 80"
should be: "80 9c 95 95 96 11 bc 96 b9 95 9d 10"

最佳答案

您总是扫描 text 的第一个值,因为您忘记在上一次扫描结束后立即移动 strtoul 的输入。这就是 strtoul**end 参数的用武之地:它指向成功扫描的最后一位数字之后的字符。注意:如果无法读入任何内容,则 end 指针等于输入指针,这表示“数字格式错误”或字符串结尾。请参阅以下程序说明这一点。希望对您有所帮助。

int main() {

const char* input = "80 9c 95 95 96 11 bc 96 b9 95 9d 10";
const char *current = input;
char *end = NULL;
while (1) {
unsigned long val = strtoul(current, &end, 16);
if (current == end) // invalid input or end of string reached
break;

printf("val: %lX\n", val);

current = end;
}
}

关于c - 如何从字符串中获取十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49342522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com