C#字节转换

时间:2009-04-25 11:48:04

标签: c#

当谈到字节对话时,我感到非常困惑。

我需要进行两次转换:

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”。

如何进行两次转换?

2 个答案:

答案 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)

  1. 这会将数字格式化为十六进制,空格如下:

    string r1 = String.Join(“”,array.Select(n => n.ToString(“x2”))。ToArray());

  2. 这会将字节转换为ASCII:

    string r2 = Encoding.ASCII.GetString(array);