Java 安卓 C# 之间字节转换问题

安卓或者说Java发送字节到C#,为何超过127的时候,C#读取的都是63。Java虽然字节有符号但C#读取以后超过127的都成了63.看下图。我的设想是java通过网络... 安卓或者说Java 发送字节到C# ,为何超过127的时候,C#读取的都是63。Java虽然字节有符号但C#读取以后超过127的都成了63.看下图。

我的设想是java通过网络发送和接受有符号数据。然后C#接受这些有符号的二进制数据。然后解码。其他的都不是问题。主要是上述的问题不解。请高手指点一下为何。谢谢
展开
 我来答
llei32wang
2013-04-20 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1405万
展开全部
java的问题 java byte 范围是-128-127 你的 141 200不能直接转换成byte。我试了一下通过字符串转换char成byte 如下
char[] c ={64,123,200,141,45};

String s=new String(c);
System.out.println(Arrays.toString(s.getBytes()));
结果:[64, 123, 63, 63, 45]
从结果能看出141和 200被换成了63 。问题出在java的字符集转换上。建议不要通过String的方法转,直接强制类型转换char 与byte 比较合适。
追问
自己找到原因了。希望对同样问题的人有帮助 
byte []a={(byte) 127 ,(byte) 128 ,(byte) 255 ,(byte) 44 };
socket.getOutputStream().write(a);
这样子就可以了。 要用socket的直接向流里面写入字节数组。
上面用的 PrintWriter会进行编码就乱了。 符号的问题就好说了。c#既然可以原样的接受数据用 n-256即可得到有符号的。
虽然楼上没解决问题,但还是很感谢你的回答。给分了 :)
匿名用户
2013-04-20
展开全部
乱七八糟𠲞秕丶心理学一个个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式