Я программирую приложение в Android Studio и должен преобразовать шестнадцатеричное значение в UINT32 Little Endian в Java. Как мне это сделать?
Вот код:
public void onNewIntent(Intent intent) {
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
info.setText(bytesToHex(tag.getId()));
String hex = bytesToHex(tag.getId()).replace(" ", "");
long value = Long.parseLong(hex, 16);
ByteBuffer buffer = ByteBuffer.allocate(4);
buffer.asLongBuffer().put(value);
buffer.order(ByteOrder.LITTLE_ENDIAN);
long kort_id = buffer.asLongBuffer().get();
SharedPreferences pref = getApplicationContext().getSharedPreferences("Storage", 0);
SharedPreferences.Editor editor = pref.edit();
editor.putString("KortID", String.valueOf(kort_id));
editor.putBoolean("initializing", true);
editor.apply();
//Intent startMainActivity = new Intent(this, MainActivity.class);
//startActivity(startMainActivity);
//finish();
}
И я получаю ошибку BufferOverflowException при запуске.