as3.0 ByteArray,服务器用socket发送了一个int level = 10;过来,客户端应该是接收4个字节的,
可是现在我接收2个字节就可以了,这是为什么?1.level=int(_soket.readUTFBytes(4));2._soket.readBytes(bytes,by...
可是现在我接收2个字节就可以了,这是为什么?
1.level = int(_soket.readUTFBytes(4));
2._soket.readBytes(bytes, bytes.length , msgLen);
var userByte:ByteArray = new ByteArray();
bytes.readBytes(userByte,0,2); 展开
1.level = int(_soket.readUTFBytes(4));
2._soket.readBytes(bytes, bytes.length , msgLen);
var userByte:ByteArray = new ByteArray();
bytes.readBytes(userByte,0,2); 展开
1个回答
展开全部
level = int(_soket.readUTFBytes(4)); ???
你确认服务端是将10做为int型二进制写入吗?是不是写进去的是"10"的字符串?
你确认服务端是将10做为int型二进制写入吗?是不是写进去的是"10"的字符串?
追答
你用sprintf函数肯定是将数字当做字符串写入,就是把 10 转成了 "10" ,这就是2个字节,如果你是10000000 转换了就是 "10000000" 就是8字节了,当字符串也是可以处理的,但就看你的需求了。
如果你是想把它当int类型,不管是10还是10000000都是写入4字节可以看下面的例子:
int len=0, a=12, b=12345678;
// 当作字符串写入
char buffer[20];
sprintf(buffer,"%d%d",a, b);
cout<< buffer << ":" << strlen(buffer) <<endl;
char buffer2[8];
memset(buffer2, 0, sizeof(buffer2));
// 定义可移动指针
char * p = buffer2;
// 强转为需要的类型写值
*(int*)p = a;
// 指针向后移动到下一个需要写入的位置
p += sizeof(int);
// 继续写值。。。
*(int*)p = b;
// 读取数
p = buffer2;
int ta = *(int*)p;
p += sizeof(int);
int tb = *(int*)p;
cout<< ta << ":" << tb <<endl;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询