同じchar配列から2つの値を結合するには?

omn​​os;

、53,01,04 ...と、さらなる操作のためのchar配列にそれらの値を割り当てる:私はそうのようにそれを解析したい、53010422230205222345(16進):私はこのメッセージを送信しています。

現在、私は、このように次のステップは53に例えば5と3を組み合わせることがある私はこだわっているところ、これは、独自の要素にすべての文字を置く方法「.toCharArray」とchar型の配列へのメッセージ全体を変換しようとしています。

私がしようとした場合:

for (int count = 0; count < chMsg.length; count = count + 2){
sb.append(chMsg[count]);
sb.append(chMsg[count+2]);

char results[] = sb.toString().toCharArray();
msg[count1].Msg = results[];
}

「:、文字が見つかりました:文字を[]に必要な」私はのためにエラーが得られます。

そして、のために:

for (int count = 0; count < chMsg.length; count = count + 2){
msg[count1].Msg = chMsg[count] + chMsg[count + 1];
}

I "が必要:CHAR、見つけます。int" を得ます。

私がしようとしているものよりも、いくつかのよりエレガント/シンプルなソリューションが存在しなければなりませんか?私は何をしようとしていることは、私は仕事にそれを変更する必要がないものをOKであれば?

以下は、私が試したの両方の方法と全体のコードがあります。

public class MainActivity extends AppCompatActivity {

public String sendMsg;
public StringBuilder builder = new StringBuilder();
public StringBuilder sb = new StringBuilder();

int i;
int count1;

MsgArray msg[] = new MsgArray[sendMsg.length()];
DataClass[] data = new DataClass[arraySize];

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    CreateArray();

    if (sendMsg != ""){
        sendMsg = "";
    }

    sendBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sendMsg = sendText.getText().toString();
            Conversion();
        }
    });
}

public void CreateArray(){
    for (i = 0; i < arraySize; i++) {
        data[i] = new DataClass();
    }

    for (i=0; i < sendMsg.length(); i++){
        msg[i] = new MsgArray();
    }
}

public void Conversion()
{
    count1 = 0;

    char[] chMsg = sendMsg.toCharArray();
    for (int count = 0; count < chMsg.length; count = count + 2){
        sb.append(chMsg[count]);
        sb.append(chMsg[count+2]);

        char results[] = sb.toString().toCharArray();
        msg[count1].Msg = results[];

        msg[count1].Msg = chMsg[count] + chMsg[count + 1];
    }

    if(sendMsg != "")
    {
        for (int a = 0; a < sendMsg.length(); a = a + 2){
            String s = sendMsg.substring(a, a + 2);
            int n = Integer.valueOf(s, 16);
            builder.append((char)n);
        }
        recieveText.setText("ASCII = " + builder.toString());
    }
}
}
ジョープEggen:

Stringユニコード、すべての文字が2バイト、UTF-16エンコードされている文字列を保持しています。だから、任意のバイト配列メモリ倍ために、いくつかの符号化およびバイトの無意味な変換があります。そして、この変換は、UTF-8の任意のバイト列を許可しませんのために間違って行くだろう。

あなたが経由で取得できるバイト:

byte[] bytes = new byte[chMsg.length / 2];
int byteI = 0;
for (int count = 0; count < chMsg.length; count = count + 2) {
    int b = Integer.parseInt(new String(chMsg, count, 2), 16); // 16 for hex
    bytes[byteI++] = (byte) b;
}

それにもかかわらず、文字列が必要とされなければならない、一つが使用できます。

String s = new String(bytes, "ISO-8859-1");
byte[] bytes = s.getBytes("ISO-8859-1");

構文は、char xxx[]C / C ++と互換性があるようにJavaで導入されました。早く始まりインチ より従来(及び論理的)ですchar[] xxx

= results[] 単純にする必要があります = results

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=331818&siteId=1