首页 > 代码库 > 整型数据的二进制格式和文本格式的传输方式

整型数据的二进制格式和文本格式的传输方式



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 = http://www.mamicode.com/*(int*)buf2;>


流可以分为两种类型:文本流(ASCII)和二进制流。文本流是解释性的,最长可达255个字符,其中回车/换行将被转换为换行符“\n”,反之亦然。二进制流是非解释性的,一次处理一个字符,并且不转换字符。 
通常,文本流用来读写标准的文本文件,或者将字符输出到屏幕或打印机,或者接受键盘的输入;而二进制流用来读写二进制文件(例如图形或字处理文档),或者读取鼠标输入,或者读写调制解调器。



整型数据的二进制格式和文本格式的传输方式