今天 面试 C++ 程序员 遇到的笔试题其中一个。

如何把一个int类型的变量放入一个buffer中,和从buffer中取出一个int变量。要求buffer在不同平台之间通过网络传输,获取的int数据是一样的。请写出两种方... 如何把一个int类型的变量放入一个buffer中,
和从buffer中取出一个int变量。
要求buffer在不同平台之间通过网络传输,获取
的int数据是一样的。请写出两种方法,
一种为二进制的格式,一种是文本的格式。

int WriteIntData(int aData, char* aBuffer)

int WriteIntText(int aData, char* aBuffer)

int ReadlntData(int aData, const char* aBuffer)

int ReadlntText(int aData, const char* aBuffer)
展开
 我来答
eiilpux17
2015-04-03 · TA获得超过802个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:401万
展开全部
思路:
网络传输数据都是字节流,一个整型需要4个字节才能完成传输,而把整数转化为字符串需要更多的字符,比如12345需要5个字节。

文本格式:
相对简单但比较耗费带宽。将整型利用库函数转化为相应的进制字符串,传输过去后进行直接处理。12345转换成字符串“12345”,收到后借助库函数再转换就可以了

二进制:
需要将4个字节进行发送,问题是:
不同平台的问题在于大端小端问题,所以必须保证收到的字节统一处理,解决方案就是自己定义自己的大端或小端方向,
简单的做法就是定义4字节的字符数组,将其低位到高位(或者相反)每一个字节存至char数组。传输过去后,从数组中取出来,取出来分别移位求和即可。
追问
只有思路  没有 代码 吗 ?  求代码 ,大神
追答
整形转换成字符串,借助itoa函数,反过来就是atoi函数,都是标准库的
整型四字节转换,借助0x000F
比如int a;
a & 0xFF,可以得到a的二进制低位1一个字节
a >> 8,右移8位,再与运算,得到第二个字节。
反过来的话类似
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式