如何将UTF8字符串转换为字节数组?

唐卡卡

.charCodeAt函数返回带有字符的unicode代码。但我想改为获取字节数组。我知道,如果字符代码超过127,则字符存储在两个或更多字节中。

var arr=[];
for(var i=0; i<str.length; i++) {
    arr.push(str.charCodeAt(i))
}
乔尼

以UTF-8编码Unicode的逻辑基本上是:

  • 每个字符最多可以使用4个字节。使用了最少的字节数。
  • 最多U + 007F的字符用单个字节编码。
  • 对于多字节序列,第一个字节中前导1位的数目给出了字符的字节数。第一个字节的其余位可用于编码字符的位。
  • 连续字节以10开头,其他6位对字符的位进行编码。

这是我不久前写的一个函数,用于以UTF-8编码JavaScript UTF-16字符串:

function toUTF8Array(str) {
    var utf8 = [];
    for (var i=0; i < str.length; i++) {
        var charcode = str.charCodeAt(i);
        if (charcode < 0x80) utf8.push(charcode);
        else if (charcode < 0x800) {
            utf8.push(0xc0 | (charcode >> 6), 
                      0x80 | (charcode & 0x3f));
        }
        else if (charcode < 0xd800 || charcode >= 0xe000) {
            utf8.push(0xe0 | (charcode >> 12), 
                      0x80 | ((charcode>>6) & 0x3f), 
                      0x80 | (charcode & 0x3f));
        }
        // surrogate pair
        else {
            i++;
            // UTF-16 encodes 0x10000-0x10FFFF by
            // subtracting 0x10000 and splitting the
            // 20 bits of 0x0-0xFFFFF into two halves
            charcode = 0x10000 + (((charcode & 0x3ff)<<10)
                      | (str.charCodeAt(i) & 0x3ff));
            utf8.push(0xf0 | (charcode >>18), 
                      0x80 | ((charcode>>12) & 0x3f), 
                      0x80 | ((charcode>>6) & 0x3f), 
                      0x80 | (charcode & 0x3f));
        }
    }
    return utf8;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将字节缓冲区转换为UTF8字符串

来自分类Dev

如何将字符串转换为字节数组并返回

来自分类Dev

Python:将utf-8字符串转换为字节字符串

来自分类Dev

将字符串转换为字节数组

来自分类Dev

如何在Ruby中将UCS-2字节数组转换为UTF-8字符串?

来自分类Dev

Scala-UTF8字符串的字节数组

来自分类Dev

dart2js之后如何将二进制数据转换为utf8字符串

来自分类Dev

在Perl中,如何将字节数组转换为Unicode字符串?

来自分类Dev

将base64字符串转换为字节数组,如C#方法Convert.FromBase64String

来自分类Dev

如何在Swift中将UInt8字节数组转换为字符串

来自分类Dev

将字节字符串转换为字节或字节数组

来自分类Dev

如何将逐个字节数组将chunck转换为base64字符串?

来自分类Dev

无法从字符串转换为字节数组

来自分类Dev

如何将字节数组转换为自定义基本字符串?

来自分类Dev

将包含字符串和int对象的列表转换为字节数组以进行套接字通信

来自分类Dev

如何将subprocess.communicate()转换为utf-8字符串?

来自分类Dev

在GJS中将字符串转换为UTF-16字节数组

来自分类Dev

如何使用Delphi将字节数组转换为字符串?

来自分类Dev

如何使用Node.js将字节数组转换为字符串?

来自分类Dev

Python:将utf-8字符串转换为字节字符串

来自分类Dev

如何在Android中将字节数组转换为不包含0x00字符的字符串

来自分类Dev

如何将保存在字节数组中的UUID转换为字符串(C ++)

来自分类Dev

将base64字符串转换为字节数组,如C#方法Convert.FromBase64String

来自分类Dev

如何将字符串转换为字节数组?

来自分类Dev

如何将逐个字节数组将chunck转换为base64字符串?

来自分类Dev

如何使用Array ConvertAll将字符串数组转换为字节数组?

来自分类Dev

从字符串数组转换为字节数组

来自分类Dev

如何将数值数组作为字符串转换为字节数组?

来自分类Dev

将字符串格式的python字节转换为c#中的字节数组

Related 相关文章

  1. 1

    将字节缓冲区转换为UTF8字符串

  2. 2

    如何将字符串转换为字节数组并返回

  3. 3

    Python:将utf-8字符串转换为字节字符串

  4. 4

    将字符串转换为字节数组

  5. 5

    如何在Ruby中将UCS-2字节数组转换为UTF-8字符串?

  6. 6

    Scala-UTF8字符串的字节数组

  7. 7

    dart2js之后如何将二进制数据转换为utf8字符串

  8. 8

    在Perl中,如何将字节数组转换为Unicode字符串?

  9. 9

    将base64字符串转换为字节数组,如C#方法Convert.FromBase64String

  10. 10

    如何在Swift中将UInt8字节数组转换为字符串

  11. 11

    将字节字符串转换为字节或字节数组

  12. 12

    如何将逐个字节数组将chunck转换为base64字符串?

  13. 13

    无法从字符串转换为字节数组

  14. 14

    如何将字节数组转换为自定义基本字符串?

  15. 15

    将包含字符串和int对象的列表转换为字节数组以进行套接字通信

  16. 16

    如何将subprocess.communicate()转换为utf-8字符串?

  17. 17

    在GJS中将字符串转换为UTF-16字节数组

  18. 18

    如何使用Delphi将字节数组转换为字符串?

  19. 19

    如何使用Node.js将字节数组转换为字符串?

  20. 20

    Python:将utf-8字符串转换为字节字符串

  21. 21

    如何在Android中将字节数组转换为不包含0x00字符的字符串

  22. 22

    如何将保存在字节数组中的UUID转换为字符串(C ++)

  23. 23

    将base64字符串转换为字节数组,如C#方法Convert.FromBase64String

  24. 24

    如何将字符串转换为字节数组?

  25. 25

    如何将逐个字节数组将chunck转换为base64字符串?

  26. 26

    如何使用Array ConvertAll将字符串数组转换为字节数组?

  27. 27

    从字符串数组转换为字节数组

  28. 28

    如何将数值数组作为字符串转换为字节数组?

  29. 29

    将字符串格式的python字节转换为c#中的字节数组

热门标签

归档