有人可以为我分解这段代码吗?我知道它会更改用户文件中的文本,我知道它对我来说非常有用。 “〜”的目的是什么?我如何修改此代码以逐字阅读用户文件,然后使用相同的公式更改它?
// first value in the file is the key
if ( fread(&key, sizeof(char), 1, infile) )
{
key = ~key;
}
while( fread(&fval ,sizeof(short), 1, infile) )
{
fputc( (fval / 2) - key, outfile );
}
答案 0 :(得分:2)
key = ~key
交换密钥
你知道比特吗?
ascii A
(65)是二进制的100 0001,因此'〜'只需交换1
的每个0
和{{1}的每个0
给出011 1110(62)1
因此,这将使用>
替换文档中的所有A
,并为所有其他字符替换。关于〜的好处是,它与解密完全相同 - 只需将每个位交换回来。
PS。这不完全是军用密码!
答案 1 :(得分:1)
评论内联!
#include <stdio.h>
int main(void)
{
/* Integer value of 'A' is 65 and
binary value is 01000001 */
char a='A';
printf("a=%d\n", a);
/* ~a is binary inverse of a so
~01000001 = 10111110 */
a=~a;
printf("a=%d\n", a);
/* easier example */
/* ~0 = 11111111 times # of bytes needed
to store int (whose value is nothing
but negative one) */
int i=0;
printf("i=%d\n", i);
i=~i;
printf("i=%d\n", i);
return 0;
}
$ ./a.out
a=65
a=-66
i=0
i=-1
$
通过上述提示,您可以尝试阅读代码并分享您的意见。
OTOH,crypt
是什么?它的类型是什么?存储在其中的值是什么?!
有关更多按位操作,请参阅this页面!