byte类型转换,java byte转c# byte。大神们帮忙看看
byte类型转换求助,java byte转c# byte。大神们帮忙看看做java与c#通信。用c#调用Socket后,java会返回值。java
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);
是否是编码的问题呢?
[解决办法]楼上说的正解,应该是编码问题。你可以试试这样来Encoding。
string msg = Encoding.GetEncoding("UTF-8").GetString(Encoding.GetEncoding("ISO-8859-1").GetBytes(ReceiveMsg));
先转换成AsicII的byet在转成UTF8的string。
[解决办法]楼主还没解决?
[解决办法]帖下ReceiveMsg?得内容。
[解决办法]编码解码问题,网络传输和有符号无符号无关
[解决办法]Big Endian和LittleEndian的问题?
[解决办法]没太看懂,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......?