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

如何把一个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)

思路:
网络传输数据都是字节流,一个整型需要4个字节才能完成传输,而把整数转化为字符串需要更多的字符,比如12345需要5个字节。

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

二进制:
需要将4个字节进行发送,问题是:
不同平台的问题在于大端小端问题,所以必须保证收到的字节统一处理,解决方案就是自己定义自己的大端或小端方向,
简单的做法就是定义4字节的字符数组,将其低位到高位(或者相反)每一个字节存至char数组。传输过去后,从数组中取出来,取出来分别移位求和即可。追问

只有思路 没有 代码 吗 ? 求代码 ,大神

追答

整形转换成字符串,借助itoa函数,反过来就是atoi函数,都是标准库的
整型四字节转换,借助0x000F
比如int a;
a & 0xFF,可以得到a的二进制低位1一个字节
a >> 8,右移8位,再与运算,得到第二个字节。
反过来的话类似

温馨提示:内容为网友见解,仅供参考
无其他回答

C++经典面试问题
堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。 注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,需要程序员自己申请,并指明大小,在c中malloc函数 在C++中用new运算符。首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时, 另外,由于找到的堆结...

C\/C++经典面试题
p指针就自加了两次,违背了 MIN的本意。面试题 7:一个指针可以是 volatile 吗 可以,因为指针和普通变量一样,有时也有变化程序的不可控性。常见例:子中断服务子程序修改 一个指向一个 buffer的指针时,必须用 volatile来修饰这个指针。说明:指针是一种普通的变量,从访问上没有什么不同于其他变量...

程序员遇到很难的技术问题是怎样的感觉?
程序员是一个不断要学习的岗位,就要面临很多从未知到已知技术的时候,每当遇到这样的情况时候,总有种不解决了这个问题,睡不着觉的感觉,心里不踏实,总是想尽各种办法去解决这个问题。甚至可以一直追查这个问题。也许这就是一种执拗吧 我老公最近就遇到一个大石头需要敲碎,我作为一个旁观者,都挺心疼他。 他还在读博...

挑战C++面试题:到底怎样写出一个无懈可击的strcpy函数?
这样你就遇到【第一个问题】了:如何知道【要拷贝的字符串】结束了(要拷贝的字符串首地址是 from)?对于 from 指针指向的字符串,你可以说字符串有个结束符 '\\0',但这个不是【强制的】。比如 char s1[4];char s2[4] = {'a','b','c','d'}; \/\/ s2 不是一个标准的 C 字符串!st...

c++经典面试题及答案
Stack由系统自动分配,而heap需要程序员自己申请,并指明大小。B. 申请后系统的响应不同 Stack:只要栈的剩余空间大于申请空间,系统就为程序提供内存,否则将抛出栈溢出异常 Heap:当系统收到程序申请时,先遍历操作系统中记录空闲内存地址的链表,寻找第一个大于所申请空间的堆结点,然后将该结点从空间...

有经验的程序员来看:C\\C++程序员需要掌握什么书籍?
C语言真题分析与实战训练(二级) ¥20.90元 本书是根据2004年教育部考试中心对二级C语言程序设计考试内容调整后的新大纲要求而编写的,书中分为“应试策略”、“真题攻关”、“强化制胜”和“上机指导”4个部分。本书对2003年4月至2004年4月3套全国计算机等级考试的笔试真题试卷的题型、考点、分值比例等情况进行?....

C\/C++程序员面试的时候一般能答对百分之多少
笔试在70%以上,面试50%以上,别问我怎么知道,我经常面试别人

C++面试题汇总
程序编译的过程中就是将用户的文本形式的源代码(c\/c++)转化成计算机可以直接执行的机器代码的过程。主要经过四个过程:预处理、编译、汇编和链接。具体示例如下。 一个hello.c的c语言程序如下。 其编译过程如下: 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 为...

华为笔试题(程序员必做)
1.了解笔试的形式和内容 华为笔试一般分为两个部分:笔试和面试。笔试一般包括编程题、选择题、填空题等,题目难度较高。面试主要是对笔试的成绩和个人能力进行考察。2.熟悉编程语言 华为笔试一般使用C++、Java、Python等编程语言,因此需要熟悉这些语言的基本语法和常用函数。3.刷题 刷题是提高编程能力的...

求C和C++程序员面试秘笈 pdf
可能遇到笔试或者多轮面试考核。这里吗就看你的硬功夫了,一般就是给你多长时间设计完成一个程序,或者程序对接,程序调试,等等。待遇问题。直接了当的说,按照公司制定的工资水平来。问清楚调薪制度、周期、幅度,或者提成计算方式,其他的福利待遇什么五险一金,都差不多,都是按照国家标准的。另外就是...

相似回答