Chvalov
@Chvalov

Как разложить строчку с числами на байты и обратно в java (Android)?

Здравствуйте, есть текстовое поле в которое я ввожу числа длиной до 8 символом.
Есть 8 текстовых полей (Plain text) в которые должны записываться число по байтово.

Например я ввожу число 57126973, то на выходе в текстовых полях должен увидеть
5
7
1
2
6
9
7
3

И потом их же собрать обратно.
Подскажите как это сделать или дайте ссылку на пример.
заранее благодарен

Вот кусок кода на примере Pavel, но я так понимаю что он для чистого java, а мне нужно под Андроид, помогите доделать.
public class MainActivity extends ActionBarActivity {

    EditText enter_number_fields;     // Сюда я ввожу строку например 57126973
    EditText Text1;     // Текстовые поля в которых должен быть вывод по одному символу
    EditText Text2;     //....
    EditText Text3;
    EditText Text4;
    EditText Text5;
    EditText Text6;
    EditText Text7;
    EditText Text8;
    EditText Construct_text;     // Строчка которая собирет все обратно с 8 полей в одну строку

    Button btn_num_byte;     // Кнопка которая разбивает строку на 8 полей
    Button btn_num_text;     // Собирает обратно с 8 в одну

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

        // находим элементы
        enter_number_fields = (EditText) findViewById(R.id.enter_number_fields);
        Text1 = (EditText) findViewById(R.id.Text1);
        Text2 = (EditText) findViewById(R.id.Text2);
        Text3 = (EditText) findViewById(R.id.Text3);
        Text4 = (EditText) findViewById(R.id.Text4);
        Text5 = (EditText) findViewById(R.id.Text5);
        Text6 = (EditText) findViewById(R.id.Text6);
        Text7 = (EditText) findViewById(R.id.Text7);
        Text8 = (EditText) findViewById(R.id.Text8);
        Construct_text = (EditText) findViewById(R.id.Construct_text);

        btn_num_byte = (Button) findViewById(R.id.btn_num_byte);
        btn_num_text = (Button) findViewById(R.id.btn_num_text);
    }

/* Разбивка строки */
    public void btn_num_byte (View view)
    {
        Text1 = str[0];
        Text2 = str[1];
        Text3 = str[2];
        Text4 = str[3];
        Text5 = str[4];
        Text6 = str[5];
        Text7 = str[6];
        Text8 = str[7];
    }
/* Разбивка строки */

/* Собираем обратно */
    public void btn_num_text (View view)
    {
        Construct_text.setText(Text1 + " " + Text2 + " " + Text3 + " " + Text4 + " " + Text5 + " " + Text6 + " " + Text7 + " " + Text8);
    }
/* Собираем обратно */
Строки не собирает, тип должен бить integer, после строк
Button btn_num_byte;
    Button btn_num_text;
я писал String srt = enter_number_fields; возникает ошибка
если так
String srt = enter_number_fields.getText().toString();
то ошибка в этом разделе public void btn_num_byte (View view) ругается на str
  • Вопрос задан
  • 2628 просмотров
Пригласить эксперта
Ответы на вопрос 3
ProgramCodePav
@ProgramCodePav
Front-end developer. Love open source
Простите за такой код :)

string str = tbInputField.Text; // 57126973

tbPlaintxt1.Text = str[0];  //5
tbPlaintxt2.Text = str[1];  //7
tbPlaintxt3.Text = str[2];  //1 ...
tbPlaintxt4.Text = str[3];
tbPlaintxt5.Text = str[4];
tbPlaintxt6.Text = str[5];
tbPlaintxt7.Text = str[6];
tbPlaintxt8.Text = str[7];


Попробуйте что-то в это роде
Назад:
tbInputField.Text = tbPlaintxt1.Text + tbPlaintxt2.Text + tbPlaintxt3.Text ... + tbPlaintxt8.Text;


А вообще это основы. Советую книжку по Java почитать о форматировании строк и работой с типом String.
Ответ написан
@gurinderu
java developer
Arrays.asList("123".split("")).stream().map(String::valueOf).mapToInt(Integer::valueOf).forEach(value -> add(new TextField(value)));

Для java можно было бы написать так, для Андроида не прокатит)
В вашем случае я бы использовал пример выше, чтобы избежать оверхеда на всякие лишние вещи.
Ответ написан
Комментировать
@Dekker8
Можно попробовать через добавление элементов на активити...(layout.addView() <--- что то в этом роде....
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы