C++ int 左移运算符

今天在看RakNet通信的时候看到这样一句代码。里面用了C++的左移运算符。

unsigned int databitlenght=length<<3;

想了一下,发现左移3位就是

length*8

基础没学好坑死人。。


为什么要这样写?


在RakNet的send()函数里面

	//给主机发送数据
	RakNet::BitStream bitStream;
	bitStream.Reset();
	bitStream.Write((unsigned char)ID_USER_PACKET_ENUM);
	bitStream.Write((RakNet::MessageID)GM_AllPOINTSTATIE_EXCHANGE);
	bitStream.WriteBits((unsigned char*)&sendPack,sizeof(GM_PointStatue)*8);

后面写入的是 WriteBits   。。用的是Bits。

而我们前面用的是sizeof() ,获取到的是byte 。

1 byte = 8 bit




你可能感兴趣的:(C++)