簡體   English   中英

在Java中通過套接字發送無符號字節

[英]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 = 0x00011 0010 = 0x32

希望對您有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM