ikegami ikegami - 23 days ago 10
C# Question

Convert byte array to string of bytes

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

rbm rbm
Answer

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)_)));
Comments