所以我正致力于加密/解密项目 我想要做的是从行中读取2个字符,并将它们用作一个十六进制数来解密为原始十六进制值,并相应地打印到文件中正确的ascii字符值..这是我的代码:
sscanf(lineFromFile, "%2C", tmp);
//check carriage return new line as per outline
if(strcmp(tmp, "\n") == 0) {
fprintf(output, "%c", tmp);
}
//Check for tab whcih is set to TT in encryption scheme
if (strcmp(tmp, "TT") == 0) {
fprintf(output, "\t");
}
else {
outchar = ((tmp + i*2) + 16);
if (outchar > 127) {
outchar = (outchar - 144) + 32;
}
fprintf(output, "%C", outchar); //print directly to file
}
答案 0 :(得分:0)
如果您有str[]="0120";
之类的字符串,
你可以做到
int a, b;
sscanf(str, "%2x%2x", &a, &b);
一次读取str
两个字符的内容,将它们视为十六进制数字,并将它们存储到变量a
和b
中。
printf("\n%d, %d", a, b);
会打印
1, 32
%x
格式说明符用于读取十六进制数字,2
中的%2x
用于指定宽度。
现在您可以使用fprintf()
将值写入文件。
fprintf(output, "%d %d", a, b);
你上次printf()
中有一个拼写错误。 char
的格式说明符为%c
而不是%C
。但在这种情况下,我使用了%d
,因为变量的类型为int
。