【发布时间】:2014-07-01 13:49:28
【问题描述】:
我正在尝试将一些 Javascript 移植到 C#,但遇到了一些麻烦。我正在移植的 javascript 调用这个
var binary = out.map(function (c) {
return String.fromCharCode(c);
}).join("");
return btoa(binary);
out 是一个数字数组。我知道它正在获取数字并使用 fromCharCode 将字符添加到字符串中。起初我不确定我的 C# 等效 btoa 是否正常工作,但我遇到的唯一问题是前 6 个或 8 个字符。除了前几个字符外,我的编码字符串输出相同。
一开始在 C# 中我是这样做的
String binary = "";
foreach(int val in output){
binary += ((char)val);
}
然后我尝试了
foreach(int val in output){
System.Text.ASCIIEncoding convertor = new System.Text.ASCIIEncoding();
char o = convertor.GetChars(new byte[] { (byte)val })[0];
binary += o;
}
两者都适用于字符串后面的字符,但不是开头。我已经研究过,但我不知道我错过了什么。
我的数字数组如下:{ 10, 135, 3, 10, 182, ....}
我知道 10 是换行符,3 是文本结尾,182 是 ¶,但令我困惑的是 135 应该是双匕首‡。当我打印字符串时,Javascript 不显示它。
所以最终发生的事情是当字符串转换为 Base64 时,我的字符串看起来像 Cj8DCj8CRFF.... 而 Javascript 字符串看起来像 CocDCrYCRFF.... 其余字符串是相同的,使用的 int 数组是一样的。
有什么想法吗?
【问题讨论】:
-
out(或我的 C# 代码中的输出)是一个数字数组。我正在尝试将其编码为文本字符串。
标签: c# javascript arrays string base64