【问题标题】:Encode javascript string bytes as base64 [closed]将javascript字符串字节编码为base64 [关闭]
【发布时间】:2020-04-08 22:50:30
【问题描述】:

我有一段c#代码

public static string Encriptar(string _cadenaAencriptar)
{
    string result = string.Empty;
    byte[] encodedData = System.Text.Encoding.Unicode.GetBytes(_cadenaAencriptar);
    result = Convert.ToBase64String(encodedData );
    return result;
}

我想要这段代码在 javaScript 中。 请帮帮我。

【问题讨论】:

  • 这不是不是加密...这是编码。应更改变量名称“加密”以反映这一点。

标签: javascript c# unicode decode encode


【解决方案1】:

所以你正在获取一个 utf16 编码的字符串并将 utf16 字节转换为 Base64 编码的字符串。

以下 JavaScript 首先将字符串转换为 utf16 字节数组。 然后将数组转换为 Base64 编码的字符串。

_arrayBufferToBase64(strToUtf16Bytes(_cadenaAencriptar))

https://stackoverflow.com/a/9458996/361714

function _arrayBufferToBase64( buffer ) {
    var binary = '';
    var bytes = new Uint8Array( buffer );
    var len = bytes.byteLength;
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode( bytes[ i ] );
    }
    return window.btoa( binary );
}

https://stackoverflow.com/a/51904484/361714

function strToUtf16Bytes(str) {
  const bytes = [];
  for (ii = 0; ii < str.length; ii++) {
    const code = str.charCodeAt(ii); // x00-xFFFF
    bytes.push(code & 255, code >> 8); // low, high
  }
  return bytes;
}

来自 javascript 的输出:

_arrayBufferToBase64(strToUtf16Bytes("hi"))
"aABpAA=="

与 C# 的输出匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-21
    • 2017-01-05
    • 2010-09-19
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多