Преобразовать в Kotlin с помощью «и» - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь транспонировать свой код JAVA в Kotlin. Не могли бы вы переставить это

String textEncoding = ((payload[0] & 128) == 0) ? "UTF-8" : "UTF-16"; // Get the Text Encoding
int languageCodeLength = payload[0] & 0063; // Get the Language Code, e.g. "en"

Это весь метод. Это для чтения NF C

     private void buildTagViews(NdefMessage[] msgs) {
        if (msgs == null || msgs.length == 0) return;

        String text = "";
//        String tagId = new String(msgs[0].getRecords()[0].getType());
        byte[] payload = msgs[0].getRecords()[0].getPayload();
        String textEncoding = ((payload[0] & 128) == 0) ? "UTF-8" : "UTF-16"; // Get the Text Encoding
        int languageCodeLength = payload[0] & 0063; // Get the Language Code, e.g. "en"
        // String languageCode = new String(payload, 1, languageCodeLength, "US-ASCII");

        try {
            // Get the Text
            text = new String(payload, languageCodeLength + 1, payload.length - languageCodeLength - 1, textEncoding);
        } catch (UnsupportedEncodingException e) {
            Log.e("UnsupportedEncoding", e.toString());
        }

        tvNFCContent.setText("NFC Content: " + text);
    }

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Вероятно, вы могли бы попробовать это:

val textEncoding = if (payload[0] and 128.toByte() == 0.toByte()) "UTF-8" else "UTF-16"
val languageCodeLength = (payload[0] and 52.toByte()).toInt()

Заявление об ограничении ответственности: не проверено, но, надеюсь, верно.

0 голосов
/ 07 мая 2020

Если вы используете IntelliJ IDEA, вы можете просто скопировать код Java и вставить его в исходный файл Kotlin. IDE должна спросить вас, хотите ли вы, чтобы код был преобразован в Kotlin.

Для ваших двух строк результат будет

var textEncoding = if (payload.get(0) and 128 === 0) "UTF-8" else "UTF-16" // Get the Text Encoding
var languageCodeLength: Int = payload.get(0) and 51  // Get the Language Code, e.g. "en"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...