Saya mengirim pesan GET dengan socket. Dan saya menerima pesan tanggapan sebagai string. Tapi saya ingin menerima sebagai heksadesimal. Tapi saya tidak mencapainya. Ini adalah blok kode saya sebagai string. Bisakah kamu membantuku ?

                    dos = new DataOutputStream(socket.getOutputStream());
                    dis = new BufferedReader(new InputStreamReader(socket.getInputStream()));

                    dos.write(requestMessage.getBytes());
                    String data = "";                       
                    StringBuilder sb = new StringBuilder();
                    while ((data = dis.readLine()) != null) {
                            sb.append(data);
                    }
3
Fatih ELMA 16 Mei 2015, 14:54
Artinya Anda ingin membaca input dari socket dalam format byte[]..???
 – 
ELITE
16 Mei 2015, 14:57
 – 
Viraj Nalawade
16 Mei 2015, 15:03
Anda benar NiRRaNjAN RauT. itu harus byte[] .
 – 
Fatih ELMA
16 Mei 2015, 15:05
Kemudian coba dengan jawaban berikut..mungkin membantu Anda..
 – 
ELITE
16 Mei 2015, 15:06
Jika Anda ingin menerima sesuatu dalam notasi heksadesimal maka pertama-tama harus dikirim dalam notasi heksadesimal. Tolong beritahu dulu apa yang terjadi.
 – 
greenapps
16 Mei 2015, 15:42

1 menjawab

Jawaban Terbaik

Ketika Anda menggunakan BufferedReader Anda akan mendapatkan input ke dalam format String..jadi cara yang lebih baik untuk menggunakan InputStream...

Di sini adalah contoh kode untuk mencapai ini.

        InputStream in = socket.getInputStream();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] read = new byte[1024];
        int len;
        while((len = in.read(read)) > -1) {
            baos.write(read, 0, len);
        }
        // this is the final byte array which contains the data
        // read from Socket
        byte[] bytes = baos.toByteArray();

Setelah mendapatkan byte[] Anda dapat mengubahnya menjadi string hex menggunakan fungsi berikut:

StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
    sb.append(String.format("%02X ", b));
}
System.out.println(sb.toString());// here sb is hexadecimal string

Referensi dari java-code-to-convert-byte-to-hexadecimal

3
Community 23 Mei 2017, 15:08
Sebenarnya saya harus menerima sebagai heksadesimal. Saya baru saja mempelajarinya. code.google.com/p/rest-client/issues/ detail?id=171. Apakah Anda punya ide tentang ini?
 – 
Fatih ELMA
16 Mei 2015, 15:32
Anda dapat mengonversi byte[] ke string hex menggunakan metode String.format();
 – 
ELITE
16 Mei 2015, 19:48