[英]Sending Unsigned Bytes Over Socket In Java
我正在嘗試將以下字節數組發送到運行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機器來更改代碼。
對我來說,您的“ C Machine”似乎只使用7位。
表示的0x80
二進制是1000 0000
,而0xB2
二進制是1011 0010
。 如果從右邊得到7位,則為000 0000 = 0x00
和011 0010 = 0x32
希望對您有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.