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);
展开
 我来答
夜影森林
2014-04-24
知道答主
回答量:6
采纳率:0%
帮助的人:9.5万
展开全部
level = int(_soket.readUTFBytes(4)); ???

你确认服务端是将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;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式