读书人

byte类型转换java byte转c# byte。大

发布时间: 2013-08-26 12:17:40 作者: rapoo

byte类型转换求助,java byte转c# byte。大神们帮忙看看
做java与c#通信。
用c#调用Socket后,java会返回值。java返回的byte。
因为java的byte类型与c#的byte类型有区别,有符号和无符号。
在C#里虽有 sbyte(有符号)类型,但是,却没找到把sbyte转换成string的方法。
目的是把java返回的byte转换成string
所以有2种方法,一种是将java byte 转换 C# byte 然后 转换成string
一种 是如何将 sbyte转换成string
求高人解答。


Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress myIP = IPAddress.Parse("127.0.0.1");//ip
IPEndPoint EPhost = new IPEndPoint(myIP, int.Parse(PubConstant.getLogProductPort)); //端口
socket.Connect(EPhost);
string SendContent = type.ToString() + "," + Status.ToString() + "," + productID + "," + SID.ToString() + "\r\n";
byte[] sendBytes = System.Text.Encoding.UTF8.GetBytes(SendContent);//务必写上\r\n
socket.Send(sendBytes, sendBytes.Length, SocketFlags.None);

byte[] ReceiveMsg = new byte[256];
int k = socket.Receive(ReceiveMsg);
string msg = Encoding.UTF8.GetString(ReceiveMsg);

[解决办法]
string msg = Encoding.UTF8.GetString(ReceiveMsg);这个不就是么
------解决方案--------------------


string msg = Encoding.UTF8.GetString(ReceiveMsg);
是否是编码的问题呢?
[解决办法]

引用:
string msg = Encoding.UTF8.GetString(ReceiveMsg);
是否是编码的问题呢?


楼上说的正解,应该是编码问题。你可以试试这样来Encoding。
string msg = Encoding.GetEncoding("UTF-8").GetString(Encoding.GetEncoding("ISO-8859-1").GetBytes(ReceiveMsg));
先转换成AsicII的byet在转成UTF8的string。
[解决办法]
楼主还没解决?
[解决办法]
帖下ReceiveMsg?得内容。
[解决办法]
编码解码问题,网络传输和有符号无符号无关
[解决办法]
Big Endian和LittleEndian的问题?
[解决办法]
引用:
看到java端sent 内容出来是 "[B@C74B55"
C#接受的byte 然后string msg = Encoding.GetEncoding("UTF-8").GetString(ReceiveMsg);
msg的内容也是 "[B@C74B55"
但在java程序里面 是将 0 or 1转换成byte 或者 直接发送string 0 or 1 的
那我怎……


没太看懂,java发送的字符串"[B@C74B55",C#接受正常。然后Java发送"01", C#接收就不正常了?没理由啊。
Java端发送"01"时,C#接收到的ReceiveMsg是什么?是这个吗91,66,64,49,53,98,57,102,57,97,13,1,0,0,0,0,0,0,0......?

读书人网 >C#

热点推荐