当谈到字节对话时,我感到非常困惑。
我需要进行两次转换:
1.我们有一个byte []数组{0x30,0x31,0x32,0x33,0x34,0x35};
如何将其转换为字符串,以便获得“30 31 32 33 34 35”。
2.我们有相同的byte []数组
现在我需要将其转换为ASCII(0x30 = 0,0x31 = 1,0,032 = 2等)
完成后我应该得到“012345”。
如何进行两次转换?
答案 0 :(得分:6)
var bytearr = new byte[] { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35 };
var str = bytearr.Select(x => x.ToString("x2"));
var ascii = bytearr.Select(x => (char)x);
如果您希望输出为单string
(而非IEnumerable
s),则可以执行以下操作:
var str = String.Join(" ", bytearr.Select(x => x.ToString("x2")).ToArray());
var ascii = new string(bytearr.Select(x => (char)x).ToArray());
答案 1 :(得分:0)
这会将数字格式化为十六进制,空格如下:
string r1 = String.Join(“”,array.Select(n => n.ToString(“x2”))。ToArray());
这会将字节转换为ASCII:
string r2 = Encoding.ASCII.GetString(array);