gpt4 book ai didi

尝试解析十六进制字符串时崩溃

转载 作者:行者123 更新时间:2023-11-30 20:35:20 27 4
gpt4 key购买 nike

我有一个“404C49474854”形式的hex字符串。我正在尝试使用以下命令从中提取文本字符串:

void  textFromHexString(char *hex,char *result)
{

for(int k=1;k<strlen(hex);k+=2)
{
char temp[3]={0};
sprintf(temp,"%c%c",hex[k-1],hex[k]);
*result=char((int)strtol(temp, NULL, 16));
result++;
*result ='\0';
print(temp); //**** edit

}

}

我从另一个函数内部调用它:

void somefunction()
{
// I have p here, which prints "404C49474854"
char text[TEXT_MAX_SIZE]={0};
textFromHexString(p,text);
}

它确实有效,但是80% 的时间都有效。在某些情况下它会崩溃,其中:

-传入的十六进制指针是:“404C49474854”当然。

- 指针 temp 获得完全不在 hex 内的其他值。

这个方法有什么根本性的错误吗?

编辑:检查循环内打印的行的位置,它将在非常具体的情况下打印:

4Hello, world

仅由数字组成的 temp 如何获取此字符串? (“Hello world”只是我在程序开头打印的一个字符串,临时大小也是 3)

最佳答案

您可以使用sscanf()直接读取给定长度的十六进制数字,如下所示:

while(hex[0] && hex[1]) {
int value;
sscanf(hex, "%2x", &value);
printf("%c", value);
hex += 2;
}
printf("\n");

关于尝试解析十六进制字符串时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39810281/

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