c-这些可以转换为文本的数字是什么


/***
* Author: Omar IRAQI
*/
#include <stdio.h>
#include <stdlib.h>
#define N 11
int main(void) {
int i, *p, encoded_message[] = {1634558290, 544104804, 1701994827, 539782501, 1918985572, 
1970565920, 1953391972, 1226845811, 1936289056, 1870209139, 8565};
char *message;
printf("%sn", (char*)encoded_message);
/**
* Let's say it again!
*/
message = (char*)malloc(N * sizeof(int));
p = (int*)message;
for (i=0; i < N; i++, p++)
*p = encoded_message[i];
printf("%sn", message);
return 0;
}

这会输出两次消息:斋月卡里姆,亲爱的学生们。我想你!

我想知道这些编码的数字是什么,因为它们与ASCII码不匹配

每个int都应拆分为4个字节,以恢复各个ascii代码。您可以简单地将每个int打印为十六进制。

您还可以计算:

1634558290 % 256
(1634558290 >> 8) % 256
(1634558290 >> 16) % 256

等等

您有11 x 4字节的整数,总共44个字节。这与消息的长度非常一致。

1 634 558 290 = 0x616D6152
52 : R
61 : a
6D : m
61 : a

查找小端序与大端序,了解字节反转的原因。

最新更新