标签:style http io ar 文件 数据 sp div c
1.将1个整型数据输入一个缓冲区char *buffer,实现跨平台传输,以二进制方式和文本方式分别实现写缓冲区和读缓冲区
---->在网络中传输是大端模式,而在本机上可能是小端模式,这个需要先判断
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char buf1[1024];
char buf2[1024];
int ascii_write_to(int);
int binary_write_to(int);
int binary_read_from();
int ascii_read_from();
int main(int argc, const char *argv[])
{
int a = 0x12345678;
binary_write_to(a);
ascii_write_to(a);
printf("%x %x\n", binary_read_from(), ascii_read_from());
return 0;
}
int ascii_write_to(int data)
{
sprintf(buf1, "%d", data);
return data;
}
int binary_write_to(int data)
{
short int x = 0x0001;
char *p = (char*)&x;
if(*p)//小端模式
{
int tmp = (data >> 24)&0xff | (data >> 8)&0xff00 | (data << 8)&0xff0000 | (data << 24)&0xff000000;
*(int*)buf2 = tmp;
}
else //大端模式
memcpy(buf2, &data, sizeof(data));
return data;
}
int ascii_read_from()
{
int tmp;
sscanf(buf1, "%d", &tmp);
return tmp;
}
int binary_read_from()
{
int data = *(int*)buf2;
unsigned short a = 0x0001;
char *p = &a;
if(!(*p))
{
int tmp = data;//大端机
}
else//小端机
{
int tmp = (data >> 24)&0xff | (data >> 8)&0xff00 | (data << 8)&0xff0000 | (data << 24)&0xff000000;
}
return tmp;
}
流可以分为两种类型:文本流(ASCII)和二进制流。文本流是解释性的,最长可达255个字符,其中回车/换行将被转换为换行符“\n”,反之亦然。二进制流是非解释性的,一次处理一个字符,并且不转换字符。
通常,文本流用来读写标准的文本文件,或者将字符输出到屏幕或打印机,或者接受键盘的输入;而二进制流用来读写二进制文件(例如图形或字处理文档),或者读取鼠标输入,或者读写调制解调器。
标签:style http io ar 文件 数据 sp div c
原文地址:http://blog.csdn.net/aa838260772/article/details/39677149