从Python到Java我怎么能做十六进制转义序列?

时间:2015-09-13 07:59:27

标签: java python hex

我试图通过Socket命令控制继电器板。

我能够创建一个可以正常运行的小型Python程序:

import socket
HOST = '192.168.1.1'
PORT = 5000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
DATA = '\x58\x01\x12\x00\x00\x00\x05\x70'
s.send(DATA)
data = s.recv(4096)
s.close()
d = data.encode('hex').upper()
print 'Received', repr(d)

现在我想把它切换到Java但是我在发送我知道的java中的HEX字符串时遇到问题应该写成: 0x58,0x01,0x12 ........ 任何人都可以帮助我在一个有效的Java例程中转换这几行吗?

1 个答案:

答案 0 :(得分:1)

在Java中,如果您编写String command = ("0x58, 0x01, 0x12, 0x00, 0x00, 0x00, 0x04, 0x6F");command将是一个仅包含您输入的字符的字符串。如果要使用byte数组,然后使用该字节数组初始化字符串,则需要做什么。像这样:

byte[] buffer = new byte[]{
    (byte)0x58,
    (byte)0x01, 
    (byte)0x12, 
    (byte)0x00, 
    (byte)0x00, 
    (byte)0x00, 
    (byte)0x04, 
    (byte)0x6F
};

BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
String command = new String(buffer);
wr.write(command);
System.out.println(command);

// Flushing the writer
wr.flush();