阿姆斯特朗解密

下面是用阿姆斯特朗加密算法加密后的一串数字,解密它!数字内容(2032951656 1629517167 1981834610 544830053 1685024615 0)

关于阿姆斯特朗回旋加速喷气式阿姆斯特朗加密算法的第一步:

该算法首先读入一段文本,该文本的每个字符仅占1字节,直到结束。

然后,该算法会将连续的每4个字节的二进制位按逆序连接,凑成一个整数,并在末尾加0。例如:
读入:

abcdefgh

(二进制:01100001(a) 01100010(b) 01100011(c) 01100100(d) 01100101(e) 01100110(f) 01100111(g) 01101000(h))

转换后:

1684234849 1751606885 0

(二进制:01100100011000110110001001100001 01101000011001110110011001100101 0)
(01100100(d)01100011(c)01100010(b)01100001(a) 01101000(h)01100111(g)01100110(f)01100101(e) 0)

思路:

看例子,每四个字母反转一次,然后将它们对应的二进制拼起来组成了一个十进制的数。那么根据解密规则,需要把每四个字符翻转过来输出,取模恰好是从低位来取自然就有了第一个思路:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <string>
using namespace std;

const int MAX = 100000000;

int main(int argc, char *argv[]) {
long long n;
while(cin >> n) {
while(n) {
cout << (char)(n % 256);
// cout << (char)n; 这里可以不%256 因为数据太大溢出以后会自动截后8位
n >> 8;
}
}
return 0;
}
script>