如何将单个字节转换为字符串

时间:2014-03-02 23:43:19

标签: c#

我在Visual Studio 2010中使用C#。

我想将一个字节(8位int)转换为一个字符长的字符串。我需要这样做,因为我想通过串行将字节值发送到Arduino。

例如,假设

byte myByte = 49;

49是字符“1”的ASCII码。我想将myByte转换为myString,如果我做了

serialport1.Write(myString);

它的功能与

相同
serialport1.Write("1");

任何人都可以帮助我吗?

6 个答案:

答案 0 :(得分:17)

System.Text.Encoding.ASCII.GetString(new[]{myByte})

答案 1 :(得分:2)

serialport1.Write(Convert.ToChar(myByte).ToString());

另请参阅:Convert.ToChar Method (Byte)

答案 2 :(得分:1)

您确定要使用ASCII吗?

如果是这样,您应该保护自己免受不可转换的数据的侵害。一种方法是在数据不是ASCII时抛出异常:

var bytes = new Byte[]{myByte};
var encoding = Encoding.GetEncoding("US-ASCII", new EncoderExceptionFallback(), 
          new DecoderExceptionFallback());
var myString = encoding.GetString(bytes);

System.Text.Encoding.ASCII会用?替换不可转换的数据,这会无声地掩盖问题并产生奇怪的症状。

答案 3 :(得分:1)

如果它可以帮助其他人:我必须在循环中执行类似的操作,并且在生成要打印的结果字符串时遇到问题。答案是使用上面的spender解决方案,但在添加到我的字符串之前将其包装以检查空字节:

string result = "";
foreach (byte myByte in myArray)
{
    if (myByte != (byte)00000000)
    {
        result += System.Text.Encoding.ASCII.GetString(new[]{myByte})
    }
}

答案 4 :(得分:1)

一个简单的解决方案是将字节转换为char,然后将其转换为字符串:

    public string SingleByteToString(byte ಠ_ಠ)
    {
        return ((char)(ಠ_ಠ)).ToString();
    }

答案 5 :(得分:0)

试试这个:

byte byteVal = 49;
serialport1.Write(System.Convert.ToString(byteValue));