首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码混淆不懂

代码混淆不懂
EN

Stack Overflow用户
提问于 2015-04-25 17:27:05
回答 2查看 372关注 0票数 4

我遇到了以下代码

代码语言:javascript
复制
#include <stdio.h>

int main(void)
{
    long long P = 1,E = 2,T = 5,A = 61,L = 251,N = 3659,R = 271173410,G = 1479296389,
              x[] = { G * R * E * E * T , P * L * A * N * E * T };
    puts((char*)x);
    return 0;
}

情况是,我不太明白它是如何工作的,这是非常令我困惑的。能请你详细解释一下吗?

编辑:还有一件事,如何打印"Hola!“(西班牙语中的“你好世界”)类似吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-25 17:38:26

哦,这个很有趣。显然,您声明了许多long long变量,以及一个由两个单元格组成的long long数组。因此,数组由16个字节组成。

假设每个字节都是一个ASCII字符,则数组表示16个字符(而最后一个字符可能为零)。你可以看到:

代码语言:javascript
复制
G * R * E * E * T = 1479296389 * 271173410 * 2 *2 * 5 = 8022916924116329800 = 
0x6F57206F6C6C6548

P * L * A * N * E * T = 1 * 251 * 61 * 3659 * 2 * 5 = 560229490 = 
0x21646C72

如果您的处理器是Little Endian,则数组在内存中的表示形式是:

代码语言:javascript
复制
48 65 6C 6C 6F 20 57 6F 72 6C 64 21 00 00 00 00

这是ASCII中的Hello World!\x00\x00\x00\x00

票数 9
EN

Stack Overflow用户

发布于 2015-04-25 18:51:26

这里有一个西班牙变体:

代码语言:javascript
复制
int main(void)
{
    int T=1, E=2, R=2, A=31, Q=784, L=70684, I=6590711, U=1181881,
        x[] = { T*I*E*R*R*A, Q*U*E, T*A*L };

    puts((char *) x);

    return 0;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29868437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档