鱼C论坛

 找回密码
 立即注册
查看: 922|回复: 1

[已解决]解码

[复制链接]
发表于 2023-12-7 14:58:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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; 
}
最佳答案
2023-12-7 14:59:38
这段代码中,将字母转换成数字的操作实际上是通过位运算来实现的。

在函数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官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-7 14:59:38 | 显示全部楼层    本楼为最佳答案   
这段代码中,将字母转换成数字的操作实际上是通过位运算来实现的。

在函数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官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表