我正在尝试将以下字节数组发送到运行C的设备。
BYTES TO SEND:
80 3f 10 01 00 3c b2 5f 0d
BYTES RECEIVED BY MACHNINE:
00 3f 10 01 00 3c 32 5f 0d
似乎由于某种原因,java正在将已签名的位转换为0,这正在操纵C机器正在读取的内容。
80 -> 00
b2 -> 32
以下是我的代码示例:
try
{
String response;
Socket clientSocket = new Socket(iPAddress, port);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
byte[] bytes = new byte[] { (byte)0x80, 0x3f, 0x10, 0x01, 0x00, 0x3c, (byte) 0xb2, 0x5f, 0x0d};
outToServer.write(bytes);
response = inFromServer.readLine();
System.out.println("FROM SCU: " + response);
clientSocket.close();
}
catch(Exception e)
{
e.printStackTrace();
}
我完全不知道我现在可以做什么,因为它似乎什么都行不通。我无法访问C机器以更改代码。
答案 0 :(得分:1)
对我来说,它看起来像你的" C机器"仅使用7位。
0x80
代表的二进制文件为1000 0000
,0xB2
二进制文件为1011 0010
。
如果从右边获得7位,则为000 0000 = 0x00
和011 0010 = 0x32
我希望这可以帮到你