如何将char和unsigned long转换成位传送?支持者有分!

来源:互联网  时间:2016/8/11 5:35:20

关于网友提出的“ 如何将char和unsigned long转换成位传送?支持者有分!”问题疑问,本网通过在网上对“ 如何将char和unsigned long转换成位传送?支持者有分!”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 如何将char和unsigned long转换成位传送?支持者有分!
描述:

如何将char和unsigned long转换成位传送?
比如char *p="abcd";
  unsigned long ul=98888231; 
  如果将他们转换为字符则会使发送的数据量增大,转换成位后就会小些。


解决方案1:

就是按内存里存放的内容传就行了。。。
long sss=10000;
send(socket,(char *)sss,4);

解决方案2:

很简单,C中的指针是可以做不同的转换的,可以如下做
unsigned long uli=33333333333;
char abc[] = "abcd";
send((char *)&uli, sizeof(uli));
send(abc, sizeof(abc));
一个unsigned long占4个字节,与四个字符是一样的,只要将它的地址强制转换为char *后给send函数即可,不需要使用memcpy来回拷贝

解决方案3:

用memcpy很方便的呀

解决方案4:

up

解决方案5:

在这里问问大虾们,如果我要发送一个对象可不可以,如果可以的话,在客户端怎么收?
比如
class Foo
{
...
}
Foo foo=new Foo();
那么怎么发送这种引用型对象?
在客户端,怎么接受再还原为一个对象

解决方案6:

怎么这个也是问题啊?你把unsigned long 转化成4个字节的字符数组发送不就行了吗?高字节在前还是低字节在前自己定啊!

解决方案7:

unsigned long uli=33333333333;
char abc[20];
abc=_uitoa(uli,cbc,10);
send(abc,...); //通过socket发送,这样原本较短的数据就变得较长了
可改为:
unsigned long uli=33333333333;
char abc[20];
memcpy(abc, &uli, sizeof(uli));
send(abc, sizeof(uli));
注发送长度应指定为sizeof(uli)或sizeof(unsigned long)

解决方案8:

呵呵 传送的时候都是传的2进制,上面的那些只是你看到的而已,如果电脑都用2进制表示了 你还能看的懂??

解决方案9:


*(buff+22) = '1';

解决方案10:

希望对你有帮助:
char buff[128];
CString talkstr;
short namelen,talklen,sendbufflen;
CString str,showtalkstr;
m_talkCnt.GetWindowText(talkstr);
showtalkstr = talkstr;
strcpy(buff, "SCPCRSSS");
namelen = m_UserName.GetLength();
*(short *)(buff+8) = namelen;
talklen = talkstr.GetLength();
*(short *)(buff+10) = talklen;
*(DWORD *)(buff+12) = talkFontClr;
talkstr = m_UserName + talkstr;
sendbufflen = 16 + namelen + talklen;
strcpy(buff+16, talkstr);
m_talkServerSocket.Send(buff, sendbufflen);

解决方案11:

sp

解决方案12:

up

解决方案13:

应该都是按位传送的啊

解决方案14:

可参照如下:
struct sendstru
{
  char a;
  long l;
}
...
sendstru.a = 'Z';
sendstru.l = 234322;
...
socket.send( (char *)&sendstru );
...

上一篇FTP 的 bug:文件日期经常出错
下一篇socket 中的sends,buffer,length,flags中的length会发送给服务器作为较证吗?
明星图片
相关文章
《 如何将char和unsigned long转换成位传送?支持者有分!》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)