【发布时间】:2018-03-17 22:28:51
【问题描述】:
我有一个带有输入参数 "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"
【问题讨论】:
-
你有什么代码?
-
sscanf不会帮助你,因为你不知道数字在哪里。我会说你是靠你自己的:遍历字符串搜索0-9A-H's。或者使用正则表达式。 -
我知道字符串的格式为:“80 9c 95 95 96 11 bc 96 b9 95 9d 10”
-
您可以在循环中使用
strtoul(),base参数为 16。它将转换一个十六进制数字,停在一个空格处,并且它会返回一个指向它转换的数字末尾的指针,这正是您需要调用strtoulon在下一次环游期间.. -
你能帮帮我吗?我是学生,我以前从未使用过它。也许你能告诉我一些使用我上面提到的类似字符串的例子