猿问

如何将字符串转换为真正的二进制表示形式(UTF-8或当前使用的任何形式)?

我想尝试使用UTF-8和Unicode,为此,我想建立一个小型网站,以帮助我更好地理解编码。


首先,我希望能够输入一些文本,然后获得字符串的实际二进制编码。为此,我正在寻找与C#或Java中的“ .GetBytes”等效的内容。我不想要解析的CharCodes!


这里是我想在JavaScript中重现的C#函数


string ToBinary(string input)

{

    //this is the part I am looking for in JavaScript

    var utf8Bytes = Encoding.UTF8.GetBytes(input);


    var bytesFormatedToBin = utf8Bytes.Select(b => Convert.ToString(b, 2).PadLeft(8, '0'));

    return string.Join(' ', bytesFormatedToBin);

}

以下是一些示例结果:


“ abc” =>“ 01100001 01100010 01100011”

“ @©®” =>“ 01000000 11000010 10101001 11000010 10101110”

“??” =>“ 11110000 10011111 10011000 10000000 11110000 10011111 10011000 10000100”

有没有办法在JavaScript中实现这一目标?


江户川乱折腾
浏览 262回答 1
1回答

烙印99

String.prototype.charCodeAt(...)仅当字符串仅包含ASCII字符时才能正常工作。TextEncoder如果要处理其他字符,则必须使用标准:const te = new TextEncoder('utf-8')function toBinaryRepr(str) {    return Array.from(te.encode(str))        .map(i => i            .toString(2)            .padStart(8, '0'))        .join(' ')}// '01100001 01100010 01100011'toBinaryRepr('abc')// '01000000 11000010 10101001 11000010 10101110'toBinaryRepr('@©®')// '11110000 10011111 10011000 10000000 11110000 10011111 10011000 10000100'toBinaryRepr('??')警告:TextEncoder在较旧的Node.js版本中不是全局构造函数-如果出现TextEncoder未定义的错误提示,请尝试通过以下方式将其导入:const { TextEncoder } = require('util')
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答