0

私はソケット接続に取り組んでいます。私はクライアント側で働いています。私はこの議論を行ってきましたSocket pass value as Hex . 1 72 61 76 69 のような 16 進数値を期待しているサーバーで、たとえば (0x01 は 16 進数値であり、文字列 "Ravi" です) 送信する必要があります。文字列 Ravi を文字列として 16 進数値に変換し、"1 "そして、バイト配列への変換を試みます。StringIndexOutOfBound 例外という例外が発生しています。

アップデート:

`public static byte[] hexStringToByteArray(String s) { int len = s.length(); byte[] データ = 新しい byte[len / 2]; for (int i = 0; i < len; i += 2) { データ[i / 2] = (バイト) ((Character.digit(s.charAt(i), 16) << 2) + Character.digit (s.charAt(i+1), 16)); データを返します。}

public String toHex(String arg) {
    return String.format("%x", new BigInteger(arg.getBytes()));
}`

これらの 2 つのメソッドを使用して 1Ravi 文字列をバイト配列に変換しましたが、例外 hexstringtobytearray メソッドが発生しています。

4

1 に答える 1

2

これを試して

        Socket sock = new Socket("host", port);
    OutputStream out = sock.getOutputStream();
    out.write(0);
String s = "ravi";
    byte[] bytes = s.getBytes("UTF-8");
    out.write(bytes);
于 2012-11-27T06:36:55.153 に答える