buffer中转换数字其实很好理解。例如:<buffer 0x36>,而0x36对应Utf8中的‘6’;再例如:<buffer 0x36 0x75>,则对应'6u';这样一值一码还能对应上。但是中文就想不通了。例如:<buffer e5 b0 8f>,对应的'小'。utf8中,'小'的charCode为23567,也就是0x5c0f,但buffer中为e5 b0 8f。所以想知道这是怎么计算的?还是说buffer有自己的一套编码规则?
buffer仅仅是数据数组序列,比如0x36是一个字符,0xe5,0xb0,0x8f一起表示一个字符,这些对buffer来说其实没有区别,只是存储的字节数据多少的问题,具体对这些数据如何处理其实仅仅是发生在存入和取出的时候,存入时本质来说就是把某个字符数据按编码转成字节数据序列,取出时则是相反的过程而已。
0x36
0xe5
0xb0
0x8f
而utf-8中对每个中文字符已经有固定的编码,在buffer存入时,只是把这些编码查询出来(在系统支持下),然后按字节存入而已,取出是就是这个过程的逆过程。
548k questions
547k answers
4 comments
86.3k users