diff options
author | Torsten Grote <t@grobox.de> | 2020-03-18 15:54:36 -0300 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2020-03-18 15:54:36 -0300 |
commit | 070fd9b7d3793082e447d7713d1dda932f237c99 (patch) | |
tree | 5d1c3ec9006eeb8adb23bac34edbced2642dba86 /taler-kotlin-common/src/main/java/net/taler/common/ByteArrayUtils.kt | |
parent | d20a5a81af4fa88eb26ea9678ecc13a0dd3d64a5 (diff) | |
download | taler-android-070fd9b7d3793082e447d7713d1dda932f237c99.tar.gz taler-android-070fd9b7d3793082e447d7713d1dda932f237c99.tar.bz2 taler-android-070fd9b7d3793082e447d7713d1dda932f237c99.zip |
Factor out some cashier code into common library
Diffstat (limited to 'taler-kotlin-common/src/main/java/net/taler/common/ByteArrayUtils.kt')
-rw-r--r-- | taler-kotlin-common/src/main/java/net/taler/common/ByteArrayUtils.kt | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/taler-kotlin-common/src/main/java/net/taler/common/ByteArrayUtils.kt b/taler-kotlin-common/src/main/java/net/taler/common/ByteArrayUtils.kt new file mode 100644 index 0000000..fba0d07 --- /dev/null +++ b/taler-kotlin-common/src/main/java/net/taler/common/ByteArrayUtils.kt @@ -0,0 +1,53 @@ +/* + * This file is part of GNU Taler + * (C) 2020 Taler Systems S.A. + * + * GNU Taler is free software; you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation; either version 3, or (at your option) any later version. + * + * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +package net.taler.common + +object ByteArrayUtils { + + private const val HEX_CHARS = "0123456789ABCDEF" + + fun hexStringToByteArray(data: String): ByteArray { + val result = ByteArray(data.length / 2) + + for (i in data.indices step 2) { + val firstIndex = HEX_CHARS.indexOf(data[i]) + val secondIndex = HEX_CHARS.indexOf(data[i + 1]) + + val octet = firstIndex.shl(4).or(secondIndex) + result[i.shr(1)] = octet.toByte() + } + return result + } + + + private val HEX_CHARS_ARRAY = HEX_CHARS.toCharArray() + + @Suppress("unused") + fun toHex(byteArray: ByteArray): String { + val result = StringBuffer() + + byteArray.forEach { + val octet = it.toInt() + val firstIndex = (octet and 0xF0).ushr(4) + val secondIndex = octet and 0x0F + result.append(HEX_CHARS_ARRAY[firstIndex]) + result.append(HEX_CHARS_ARRAY[secondIndex]) + } + return result.toString() + } + +} |