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

本文关键字:字节 字符串 转换 数组 字节数 | 更新日期: 2023-09-27 18:16:56

byte[] val = { 3, 4, 5 };
Dictionary<String, Object> dict = new Dictionary<String, Object>();
dict.Add("val", val);
//...
string request_json = new JavaScriptSerializer().Serialize(dict);
Console.Out.WriteLine(request_json);

这生产

{"val":[3,4,5]}

转换val的最佳方法是什么,以便上述生成以下(或等价):

{"val":"'u0003'u0004'u0005"}

(传递给web服务,它需要一个任意字节的字符串,而不是一个任意字节的数组。)


如果有帮助,我会在Perl中使用以下代码:

pack "C*", @bytes

一个更具描述性的Perl解决方案是:

join "", map { chr($_) } @bytes

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

这应该能奏效:

dict.Add("val", String.Join("", val.Select(_ => (char)_)));

或者按照Michael的建议:

dict.Add("val", String.Concat(val.Select(_ => (char)_)));

一个可能的解决方案:

StringBuilder sb = new StringBuilder(val.Length);
foreach (byte b in val) {
    sb.Append((char)b);
}
dict.Add("val", sb.ToString());

注:Convert.ToChar(b)可以代替(char)b