¿Cómo combinar 2 valores de la misma matriz de caracteres?

Omnos;

Estoy enviando este mensaje: 53010422230205222345 (hexagonal), quiero analizarlo así: 53,01,04, ... y asignar esos valores a una matriz de caracteres para su posterior manipulación.

Actualmente estoy tratando de convertir todo el mensaje de matriz de caracteres con el método ".toCharArray", que pone a cada personaje en su propio elemento, por lo que el siguiente paso tiene que combinar por ejemplo, 5 y 3 a 53, aquí es donde yo estoy atascado .

Si trato:

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[];
}

Recibo mensajes de error para "requerido: char, encontraron: char []".

Y para:

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

Me sale "requerido: char, encontró: int".

Tiene que haber alguna solución más elegante / sencilla de lo que estoy tratando? Si lo que estoy tratando es OK ¿Qué tengo que alterar para que funcione?

A continuación se muestra el código completo con ambos métodos que probé.

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());
    }
}
}
Joop Eggen:

Stringsostiene Unicode, una matriz de caracteres en el que cada char es 2 bytes, UTF-16 codificado. Así que para las matrices de bytes arbitrarias las dobles de memoria, hay una conversión sin sentido entre algunas de codificación y los bytes. Y esta conversión va a salir mal para UTF-8, que no permitirá que cualquier secuencia de bytes.

Los bytes se puede obtener a través de:

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;
}

Sin embargo, debe ser necesaria una cadena, se podría utilizar:

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

La sintaxis char xxx[]se introdujo en java para ser compatible con C / C ++; en el inicio temprano. Más convencional (y lógica) es char[] xxx.

= results[] debe ser simplemente = results

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=331821&siteId=1
Recomendado
Clasificación