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);
This produces
{"val":[3,4,5]}
What's the best way to convert val
such that the above produces the following (or equivalent) instead:
{"val":"\u0003\u0004\u0005"}
(This is passed to a web service which expects a string of arbitrary bytes rather than an array of arbitrary bytes.)
In case it helps, I would have used the following in Perl:
pack "C*", @bytes
A more descriptive Perl solution would be:
join "", map { chr($_) } @bytes
This should do the trick:
dict.Add("val", String.Join("", val.Select(_ => (char)_)));
or as suggested by Michael:
dict.Add("val", String.Concat(val.Select(_ => (char)_)));
One possible solution:
StringBuilder sb = new StringBuilder(val.Length);
foreach (byte b in val) {
sb.Append((char)b);
}
dict.Add("val", sb.ToString());
Note: Convert.ToChar(b)
could be used instead of (char)b
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.