user-0 提问: 打印hello world的疑问

回复:
user: user-1
content: 浮点数格式 http://bbs.csdn.net/topics/390676437

user: user-2
content: 引用 11 楼 wqte45 的回复:引用 9 楼 paschen的回复:1819043144 十六进制是 6C6C6548其中48对应的ASCII码是H，65对应的是e，后面的以此类推https://baike.baidu.com/item/ASCII/309296?fr=aladdin&fromid=19660475&fromtitle=ascii%E7%A0%81%E8%A1%A8因为是小端存储，所以你取的时候是从后向前你可以这样组合成其他字符来显示，但实际没必要这样写恩  说的非常好。如果用double类型存储   该怎么转换啊  double就比较麻烦了，因为浮点数的存储格式是分为符号、指数、尾数，就是说不同的位有不同的含义，你需要将组合了字符的数转换成二进制，计算对应的浮点数是多少，通常这个浮点数不一定是一个十进制下的有限小数，当然一个简单的办法是你写出你要的字符串，然后用一个double*指针指向它，然后解引该指针就知道它的值了，当然实际这没什么意义，程序是写给自己看的，电脑中全是数，只有人知道代表什么

user: user-0
content: 引用 8 楼 mk112255的回复:[quote=引用 6 楼 wqte45 的回复:] [quote=引用 5 楼 mk112255的回复:][quote=引用 3 楼 zh19921107 的回复:] 可以逆向将china字符串数组强制转换成int数组，然后输出值。 你说的强制转换是否用int来打印china，还是其他[/quote] 用int打印china[/quote] 个人感觉数组大小与int类型大小相关，在我的电脑int是4位的，一个int类型值只能装4个字符，每4字母相对应的ASII码按顺序由高向低排序，就可以了[/quote] 说的简单，可我不会啊    你能告诉我  double类型的怎么计算吗  可以存8个字节  可是它跟int逆向顺序又不一样   用double该怎么换算啊

user: user-0
content: 引用 9 楼 paschen的回复:1819043144 十六进制是 6C6C6548  其中48对应的ASCII码是H，65对应的是e，后面的以此类推  https://baike.baidu.com/item/ASCII/309296?fr=aladdin&fromid=19660475&fromtitle=ascii%E7%A0%81%E8%A1%A8  因为是小端存储，所以你取的时候是从后向前  你可以这样组合成其他字符来显示，但实际没必要这样写 恩  说的非常好。 如果用double类型存储   该怎么转换啊

user: user-2
content: 1819043144 十六进制是 6C6C6548  其中48对应的ASCII码是H，65对应的是e，后面的以此类推  https://baike.baidu.com/item/ASCII/309296?fr=aladdin&fromid=19660475&fromtitle=ascii%E7%A0%81%E8%A1%A8  因为是小端存储，所以你取的时候是从后向前  你可以这样组合成其他字符来显示，但实际没必要这样写

user: user-3
content: 引用 6 楼 wqte45 的回复:[quote=引用 5 楼 mk112255的回复:][quote=引用 3 楼 zh19921107 的回复:] 可以逆向将china字符串数组强制转换成int数组，然后输出值。 你说的强制转换是否用int来打印china，还是其他[/quote] 用int打印china[/quote] 个人感觉数组大小与int类型大小相关，在我的电脑int是4位的，一个int类型值只能装4个字符，每4字母相对应的ASII码按顺序由高向低排序，就可以了

user: user-4
content: #include <stdio.h> #include <string.h>   int main(void) {     char str[] = "china";      int a[2];      memcpy(a, str, strlen(str));      printf("%d, %d\n", a[0], a[1]);      printf("%s\n", (char *)a);      return 0; } 类似这样 对于int类型要申请多长的数组，要看字符串里有多少个字节，比如"china"是5个字节，所以需要申请int类型的长度是5/4 + 1

user: user-0
content: 引用 5 楼 mk112255的回复:[quote=引用 3 楼 zh19921107 的回复:] 可以逆向将china字符串数组强制转换成int数组，然后输出值。 你说的强制转换是否用int来打印china，还是其他[/quote] 用int打印china

user: user-1
content: 仅供参考：#include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> int main() {     int i,v;     char bs[33];     char b[33];     char hs[9];     char h[9];     char s[4];     char *e;  // 十进制整数转二进制串；     i=1024;     ltoa(i,b,2);     sprintf(bs,"%032s",b);     printf("i=%d,bs=%s\n",i,bs); // 十进制整数转十六进制串；     i=1024;     ltoa(i,h,16);     sprintf(hs,"%08s",h);     printf("i=%d,hs=%s\n",i,hs); // 十六进制字符串转成十进制数     strcpy(hs,"00000400");     sscanf(hs,"%x",&i);     printf("hs=%s,i=%d\n",hs,i); // 二进制字符串转化为十六进制字符串；     strcpy(bs,"00000000000000000000010000000000");     i=strtol(bs,&e,2);     ltoa(i,h,16);     sprintf(hs,"%08s",h);     printf("bs=%s,hs=%s\n",bs,hs); // 二进制字符串转化为十进制数；     strcpy(bs,"00000000000000000000010000000000");     i=strtol(bs,&e,2);     printf("bs=%s,i=%d\n",bs,i); // 十六进制字符串转成二进制串     strcpy(hs,"00000400");     sscanf(hs,"%x",&i);     ltoa(i,b,2);     sprintf(bs,"%032s",b);     printf("hs=%s,bs=%s\n",hs,bs); // ASC\GBK字符串转十六进制串     strcpy(s,"a汉");     i=0;     while (1) {         if (0==s[i]) break;         sprintf(hs+i*2,"%02X",(unsigned char)s[i]);         i++;     }     setlocale(LC_ALL,"chs");     printf("s=%s,hs=%s\n",s,hs); // 十六进制字符串转成汉字（GBK）及字符(ASC)     strcpy(hs,"61BABA");     i=0;     while (1) {         if (1!=sscanf(hs+i*2,"%2x",&v)) break;         s[i]=(char)v;         i++;     }     s[i]=0;     printf("hs=%s,s=%s\n",hs,s);      return 0;  } //i=1024,bs=00000000000000000000010000000000 //i=1024,hs=00000400 //hs=00000400,i=1024 //bs=00000000000000000000010000000000,hs=00000400 //bs=00000000000000000000010000000000,i=1024 //hs=00000400,bs=00000000000000000000010000000000 //s=a汉,hs=61BABA //hs=61BABA,s=a汉

user: user-1
content: 理解和讨论之前请先学会如何观察！  计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 多用小脑和手，少用大脑、眼睛和嘴，会更快地学会编程！ 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步Debug版对应汇编一行！ 单步Debug版对应汇编千行不如单步Release版对应汇编一行！ 不会单步Release版对应汇编？在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有，然后在IDE中运行。（一般人我不告诉他！）  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。  http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素

user: user-3
content: 引用 3 楼 zh19921107 的回复:可以逆向将china字符串数组强制转换成int数组，然后输出值。 你说的强制转换是否用int来打印china，还是其他

user: user-0
content: 引用 3 楼 似缘非缘的回复:可以逆向将china字符串数组强制转换成int数组，然后输出值。 怎么逆向啊？？？？？

user: user-5
content: 可以逆向将china字符串数组强制转换成int数组，然后输出值。