diff --git a/ktx/build.gradle b/ktx/build.gradle index 83a3034..7e93576 100644 --- a/ktx/build.gradle +++ b/ktx/build.gradle @@ -103,7 +103,7 @@ publish { userOrg = 'luyaox' //bintray.com 注册的用户名 groupId = 'luyao.util.ktx' //以后访问 jcenter上此项目的路径,一般和库项目的包名一致 artifactId = 'AndroidUtilKTX' //bintray.com 创建的 Package 名 - publishVersion = '0.0.7-alpha01' //版本号 + publishVersion = '0.0.7-alpha02' //版本号 desc = 'Android Kotlin Util Code' //版本说明,随意 website = 'https://github.com/lulululbj/AndroidUtilCodeKTX' //关于这个开源项目的网站,随意 } \ No newline at end of file diff --git a/ktx/resources/enc b/ktx/resources/enc index 7df9a08..334cb80 100644 Binary files a/ktx/resources/enc and b/ktx/resources/enc differ diff --git a/ktx/src/main/java/luyao/util/ktx/ext/TransformExt.kt b/ktx/src/main/java/luyao/util/ktx/ext/TransformExt.kt index cf86a86..da4518a 100644 --- a/ktx/src/main/java/luyao/util/ktx/ext/TransformExt.kt +++ b/ktx/src/main/java/luyao/util/ktx/ext/TransformExt.kt @@ -8,6 +8,7 @@ import android.graphics.PixelFormat import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable import java.io.ByteArrayOutputStream +import java.util.* /** @@ -31,6 +32,34 @@ fun ByteArray.toHexString(): String { return String(result) } +/** + * hex string to byte array + */ +fun String.hexToByteArray(): ByteArray { + var len = length + var hexString = this + if (len % 2 != 0) { + hexString = "0$hexString" + len++ + } + val hexBytes = hexString.toUpperCase(Locale.getDefault()).toCharArray() + val ret = ByteArray(len shr 1) + var i = 0 + while (i < len) { + ret[i shr 1] = ((hexBytes[i].hexToInt()) shl 4 or (hexBytes[i + 1].hexToInt())).toByte() + i += 2 + } + return ret +} + +fun Char.hexToInt(): Int { + return when (this) { + in '0'..'9' -> this - '0' + in 'A'..'F' -> this - 'A' + 10 + else -> throw IllegalArgumentException() + } +} + /** * byte array to int */ diff --git a/ktx/src/test/java/luyao/util/ktx/ext/AesExtKtTest.kt b/ktx/src/test/java/luyao/util/ktx/ext/AesExtKtTest.kt index cfe8f03..d3a2e4a 100644 --- a/ktx/src/test/java/luyao/util/ktx/ext/AesExtKtTest.kt +++ b/ktx/src/test/java/luyao/util/ktx/ext/AesExtKtTest.kt @@ -11,7 +11,7 @@ import java.io.File */ class AesExtKtTest { - private val plainText = "luyao" + private val plainText = "路遥.zip" var key: ByteArray = ByteArray(128) var iv: ByteArray = ByteArray(128) diff --git a/ktx/src/test/java/luyao/util/ktx/ext/TransformExtKtTest.kt b/ktx/src/test/java/luyao/util/ktx/ext/TransformExtKtTest.kt index e391f88..8aec59a 100644 --- a/ktx/src/test/java/luyao/util/ktx/ext/TransformExtKtTest.kt +++ b/ktx/src/test/java/luyao/util/ktx/ext/TransformExtKtTest.kt @@ -10,15 +10,17 @@ import org.junit.Assert.* */ class TransformExtKtTest { - val integer = 207689539 - val intBytes = byteArrayOf(12,97,23,67) - val short : Short = 32767 - val shortBytes = byteArrayOf(-1,127) + private val text = "路遥.txt" + private val integer = 207689539 + private val intBytes = byteArrayOf(12,97,23,67) + + private val short : Short = 32767 + private val shortBytes = byteArrayOf(-1,127) - val long = 2223372036854775807L - val longBytes = byteArrayOf(-1, -1, 67, 108, 22, 1, -37, 30) + private val long = 2223372036854775807L + private val longBytes = byteArrayOf(-1, -1, 67, 108, 22, 1, -37, 30) @Test fun test() { @@ -43,4 +45,15 @@ class TransformExtKtTest { assertEquals(long,bytesToLong) } + @Test + fun toHexString() { + val hexString = text.toByteArray().toHexString() + val originString = hexString.hexToByteArray() + + assertEquals(text,String(originString)) + } + + + + } \ No newline at end of file