|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么letter可以变成数字(代码如下)
- #include <stdio.h>
- void sperated(int decrypted,int *letter1,int *letter2)
- {
- *letter1 = decrypted >> 8;
- *letter2 = decrypted & 255;
- }
- int main()
- {
- int encrypted_message[20] = {15643, 6913, 6916, 23040, 2377, 6985, 6408, 3657, 5638,
- 3084, 2119, 15910, 23079, 13629, 23101, 10300, 10557,
- 23073, 13092, 23369};
- int i,letter1,letter2;
- for(i = 0;i < 20;i++)
- {
- int decrypted;
- decrypted = encrypted_message[i] ^ 31337;
- sperated(decrypted,&letter1,&letter2);
- printf("%c%c",letter1,letter2);
- }
- return 0;
- }
复制代码
这段代码中,将字母转换成数字的操作实际上是通过位运算来实现的。
在函数sperated中,通过位运算符“>>”和“&”将一个16位整数decrypted拆分成两个8位的数字letter1和letter2。
具体操作如下:
- 使用“>>”运算符,将decrypted右移8位,将高8位的字节提取出来。然后使用解引用符“*”将提取的结果赋值给letter1。
- 使用“&”运算符,将decrypted与255(即二进制的11111111)进行按位与运算,提取低8位的字节。然后使用解引用符“*”将提取的结果赋值给letter2。
在主函数main中,循环遍历数组encrypted_message,并将每个元素和31337(一个整数)进行异或运算得到解密后的消息。然后调用函数sperated将解密后的消息分割成两个8位的字节,分别打印出来。
所以,这段代码中并没有直接将字母转换成数字的过程,而是通过位运算将一个16位的整数拆分成两个8位的数字来表示字母。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
|
|