C++将8字节的long long转换成char数组

来源:互联网 发布:松锦大战知乎 编辑:程序博客网 时间:2024/06/01 07:45

最近在做一个项目,是关于文件传输的,传输文件内容之前先传文件大小过去。服务端在读取数据时,先读取8个字节的数据作为文件大小,方便传输的过程中显示进度条。服务端用的是Java。客户端用的是C++,windows平台的。那么问题来了,send函数只接受char*类型的数据,在传文件之前怎么先传输Java long长度一致的数据过去呢,首先考虑到就是将long long类型转换成char数组。再将char数组传过去。想了一下位操作,结果可以实现了。代码如下:

/**java的long占8个字节,和64位操作系统的long long 一致*该函数通过位操作将long long转换成char数组*/char* long2charArr(long long  num) {char* arr=new char[8];int wei=56;for(int i=7;i>=0;i--){long long temp=num<<wei;//左移到56-64位,将比它高的位丢失arr[i]=temp>>56;//右移到1-8位,将比它低的位丢失wei-=8;}return arr;}

通过new申请内存,不用的时候记得delete掉。

0 0
原创粉丝点击