int a[3] = {1819043144,1870078063,6581362};
printf("%s",a);
会输出hello world
我看了了 这个地址的内存存储的 是hello world的十六进制
那么问题来了, 这个数字数组是怎么生成的呀?
比如我想打印china 怎么样能换算出类似的数字?
亲手绘图,自己推理,采纳请给分,有疑问请提出
将数组中的十六进制和字符串中各个字符的十六进制ascii码对比一下,你就知道怎么换算了
https://zhidao.baidu.com/question/265294072453740725.html
你真的看不出规律么
VOID StringToIntArray()
{
CHAR szString[] = "zhe li zhi shi yi ge ce shi aaaaaaaaaaaaaaaaaaaaaaaaaa\nhahahahaha buguan \n\n!!!!!";
INT nStringLen = strlen(szString) + 1;
INT nIntCount = static_cast<INT>(nStringLen / sizeof(INT));
INT nFillLen = nStringLen - nIntCount * sizeof(INT);
INT nArrayLen = nIntCount + (nFillLen == 0 ? 0 : 1);
printf("Len:%d Need:%d\n", nIntCount, nFillLen);
INT *NumArray = new INT[nArrayLen];
RtlMoveMemory(NumArray, szString, nArrayLen * 4);
printf("INT nString[]={");
INT iIndex = 0;
do
{
printf("%d,",NumArray[iIndex]);
if ((iIndex + 1) % 4 == 0)
{
printf("\n");
}
iIndex++;
} while (iIndex<nArrayLen);
printf("\b};");
}
http://blog.csdn.net/huqinwei987/article/details/23597091
用union
首先给楼主一个在线转换进制的链接http://tool.oschina.net/hexconvert/
因为楼主要生成china的步骤,那下面演算一遍。china分为两个部分,一个chin,一个a .第一部分的ascii码是63 68 69 6e。如楼上所说,要倒序排列。所以就是6e696863,然后将这串数字转换成十进制,就是1852401763,可以在刚刚那个链接里面转换,也可以列式子,6X16^7+14X16^6+6X16^5...以此类推。接下来就是a对应的十六进制的ASCII码,即61,61转换成十进制数字是97.所以这个数组就是{1852401763,97}.
这个我也是刚刚从那个文档里还有其他的进制转换学来的,谢谢楼主提的问,我又复习了一遍十六进制转换.
按楼主提供的数组输出应该是 “Hello world”而不是“hello world”
对照assic码表把china 的assic码值找不来不就可以了嘛