打印hello world的疑问?

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码值找不来不就可以了嘛