在我学习网络编程这本书时,在编程时在进行两机需要传送int型时,我初始是用linux中sprinf()函数字符串与数字进行转换,后来我看到了书上的标准操作,说实话除了功能一样,实现的方式相差甚远,书中主要是利用指针和强转,将int存储在char[]中,不怕你们笑话兄弟萌,我真的没见过,字符串与数字之间的转换在windows中我只知道atoi,itoa之类的……………………
根据我较深入的理解,我明白了其中的point,int是4个字节,也就是把int储存到4个char中!举个栗子
char str[1024];
int x=5024;
怎么把x储存在str[1]∽str[4]?
int* temp=(int*)(str+1);
//将str[1]及str[1]之后的空间强转成int型数组,将该强转后的int数组首地址赋予temp
temp[0]=x;
//此时temp就是个int数组;
printf("%d\n",((int*)(str+1))[0]);
printf("%d\n",temp[0]);
//输出x的值,运行一下证明其指针的指向是相同的。
当然这在正常的编程中感觉阅读性并不是很好,但是仅在我对这本书(网络编程)学习中感觉很有用,特别是两机之间的数据传送,只要定义好应用层的协议,我用char*可以传送任意类型,我所传送的数据将更加广泛。
突然有点理解大一书本上说的指针和强转是c中的倚天剑和屠龙刀了
若其中有错误的地方,望指正
根据我较深入的理解,我明白了其中的point,int是4个字节,也就是把int储存到4个char中!举个栗子
char str[1024];
int x=5024;
怎么把x储存在str[1]∽str[4]?
int* temp=(int*)(str+1);
//将str[1]及str[1]之后的空间强转成int型数组,将该强转后的int数组首地址赋予temp
temp[0]=x;
//此时temp就是个int数组;
printf("%d\n",((int*)(str+1))[0]);
printf("%d\n",temp[0]);
//输出x的值,运行一下证明其指针的指向是相同的。
当然这在正常的编程中感觉阅读性并不是很好,但是仅在我对这本书(网络编程)学习中感觉很有用,特别是两机之间的数据传送,只要定义好应用层的协议,我用char*可以传送任意类型,我所传送的数据将更加广泛。
突然有点理解大一书本上说的指针和强转是c中的倚天剑和屠龙刀了
若其中有错误的地方,望指正