ソケットにバイトとして書き込もうとしている16進数の文字列があります。ソケットJavaのバイトとして16進文字列を書き込む
String confDeliv = "\\x7E\\x01\\x00\\x20\\x37\\x02\\x03\\xF2\\xD5";
私は
byte [] Delivery_Conf = {(byte)0x7E, (byte)0x01, (byte)0x00, (byte)0x20,
(byte)0x37, (byte)0x02, (byte)0x03, (byte)0xF2, (byte)0xD5};
私の問題を試み、解決するためにこれをやって試してみました。しかし、私はソケットにそれを書くために成功するためには至っていません。私は何の誤りもありませんが、私がそれをデバイスに送信するとき、私が必要とすることはしません。私はこれを行う2つの異なる方法を試しました。
は1をお試しください:
DataOutputStream dOut = new DataOutputStream(sock.getOutputStream()); //69.171.154.64
for (int i = 0; i < Delivery_Conf.length-1; i++) {
dOut.writeByte(Delivery_Conf[i]);
}
dOut.flush();
Iが、バイト配列に値Iが使用されるこの方法。
は2を試してみてください。
DataOutputStream dOut = new DataOutputStream(sock.getOutputStream());
dOut.writeBytes(confDeliv);
dOut.flush();
これは私が文字列が、まだ運としてそれを送信しようとしたとき、私は使用される方法です。私はバイト文字列を使用してPythonを使用すると、デバイスを動作させることができます。
例えば、
confDel = b"\x7E\x01\x00\x20\x37\x02\x03\xF2\xD5"
私はそれを送信すると何か変わると思うので、私はそれをJavaで動作させることができます。私は周りを見回してきましたが、私の問題を助けてくれるものは見つけられません。
デバイス側で受信した文字列が「間違っている」ことを正確に説明できますか? – uniknow
私が見つけようとしていることがあります。 @uniknow – cunniemm
私は '\ x7E'を必要とするバイトを送信するときに、スラッシュをバックスラッシュにする必要があります。それ以外の方法でコードを追加するにはどうすればいいですか?その仕事をするには? – cunniemm