Android Unicode与文本字符串互相转换

Android Unicode与文本字符串互相转换

代码

kotlin

   /**
     * 补全length位,不够的在后面加0
     * @param str
     * @return
     */
    fun upToNStringInBack(str: String, length: Int): String {
        var result = StringBuilder()
        if (str.length < length) {
            result.append(str)
            for (i in 0 until length - str.length) {
                result.append("0")
            }
        } else {
            result = StringBuilder(str)
        }
        return result.toString()
    }

    /**
     * 将 unicode 转换成字符串,不带"\\u"
     */
    fun unicodeNoPrefixToUtf8(str: String): String {
        val builder = StringBuilder()
        val offset = str.length % 4
        var value = str
        if (offset != 0) {
            value = upToNStringInBack(str, str.length + (4 - offset))
        }
        for (i in value.indices step 4) {
            val end = i + 4
            if (str.length >= end) {
                val item = value.substring(i, end)
                val data = Integer.parseInt(item, 16)
                if (data != 0) builder.append(data.toChar())
            }
        }
        return builder.toString()
    }

    /**
     * 将 unicode 转换成字符串,带"\\u"
     */
    fun unicodeToUtf8(str: String): String {
        return unicodeNoPrefixToUtf8(str.replace("\\u", ""))
    }

    /**
     * 将字符串转换成 unicode,不带"\\u"
     */
    fun utf8ToUnicodeNoPrefix(str: String) : String {
        val builder = StringBuilder()
        for (c in str.iterator()) {
            val item = Integer.toHexString(c.toInt())
            builder.append(upToNString(item, 4))
        }
        return builder.toString()
    }

    /**
     * 将字符串转换成 unicode,带"\\u"
     */
    fun utf8ToUnicode(str: String) : String {
        val builder = StringBuilder()
        for (c in str.iterator()) {
            val item = Integer.toHexString(c.toInt())
            builder.append("\\u").append(upToNString(item, 4))
        }
        return builder.toString()
    }

完事

发布了103 篇原创文章 · 获赞 31 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/sinat_38184748/article/details/103727226