2016-04-08 16 views
0

Bir yuvaya bayt olarak yazmaya çalıştığım bir hex değerleri dizim var.Onaltılık dize yuvaya onaltılık yazdı java

String confDeliv = "\\x7E\\x01\\x00\\x20\\x37\\x02\\x03\\xF2\\xD5"; 

benim sorunu

byte [] Delivery_Conf = {(byte)0x7E, (byte)0x01, (byte)0x00, (byte)0x20, 
          (byte)0x37, (byte)0x02, (byte)0x03, (byte)0xF2, (byte)0xD5}; 

denemek ve çözmek için bunu denedi Ama soketine yazmaya başarılı henüz. Herhangi bir hata alamıyorum ama cihaza gönderdiğimde bunu yapmak için ihtiyacım olan şeyi yapmamak, bunu yapmanın iki farklı yolunu denedim.

1 deneyin: kullanılan

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(); 

Bu yöntem, zaman ancak bir bayt dizisi değerleri.

2 deneyin:

DataOutputStream dOut = new DataOutputStream(sock.getOutputStream());           

      dOut.writeBytes(confDeliv); 
      dOut.flush(); 

Bu ipi ama hala hiçbir şans olarak göndermeden çalıştığında kullandığım yöntemdir. Ben bayt dizesini kullanarak python kullandığımda aygıt çalışabilirim. Örn.,

örn.

confDel = b"\x7E\x01\x00\x20\x37\x02\x03\xF2\xD5" 

Bence java, gönderdiğimde bir şey değiştiriyor ve bence bu yüzden java ile çalışabiliyorum. Aradan baktım ama sorunumda bana yardımcı olacak bir şey bulamıyorum.

+0

Aygıt tarafında alınan dize ile neyin yanlış olduğunu tam olarak açıklayabilir misiniz? – uniknow

+0

Bunu öğrenmeye çalıştığım şey. @uniknow – cunniemm

+0

Baytları gönderdiğimde, '\ x7E' olması gerekiyor geriye doğru eğik olmalı ya da işe yaramazsa, bunu koduma nasıl ekleyebilirim? Bu işi yapmak için? – cunniemm

cevap

0

Aşağıdaki kullanmalıdır:

byte [] Delivery_Conf = {(byte)0x7E, (byte)0x01, (byte)0x00, (byte)0x20, 
         (byte)0x37, (byte)0x02, (byte)0x03, (byte)0xF2, (byte)0xD5}; 
// ... 
dos.write(Delivery_conf); 

sürümü çalışmalıdır seferinde bir byte yazı vardı ama verimsiz, ve o cihaz kısıtlamaları zamanlama vermiş olması da mümkündür.

String kullanarak sürüm doğru değil. \x derlemesini oluşturmak için başka bir ters eğik çizgi eklemek doğru bir çözüm değildir: \x'u \u00'a değiştirmelisiniz. Dize boyunca, tabiki, yani.

+0

aracılığıyla tüm komutu aldığım sürece ne demek "change \ x to \ u00" ifadesini kastediyorsunuz. Buna bayt dizimden bahsedemiyorum çünkü bir dizge için hata yapıyor. – cunniemm

+0

'String'in kullanıldığı sürümden bahsediyorum. Lütfen yazdıklarımı okuyun. – EJP

+0

Benim hatam. Cevabınız için teşekkürler. – cunniemm