从给定字符串转换回byte/sbyte

本文关键字:byte sbyte 转换 字符串 | 更新日期: 2023-09-27 18:16:29

我有一个函数,它形成一个像这样的字符串

public static string formString(sbyte myByte)
{
   try
   {
      var str = string.Empty;
      for (int i = 0; i <= 7; i++)
      {
         if(( (1<<i) & myByte ) == 0)
         {
            str = str + "0";
         }
         else
         {
            str = str + "1";
         }
      }
      return str;
   }
   catch (System.Exception ex)
   {
      return null;
   }
}

以这种方式,如果我放一个sbyte(9),那么字符串结果将是"10010000",所以这里的问题是,我如何才能将字符串"10010000"转换回给定的sbyte?

从给定字符串转换回byte/sbyte

string str = "10010000";
str = (str.TrimEnd('0', ''0'));
sbyte s = Convert.ToSByte(str, 2);

首先从string中删除所有末尾的零,然后转换为以2为基数的sbyte。9.

您可能知道二进制是如何工作的。它们是2^0+2^1+2^2+2^3+...。所以当字符串是10010000时,你可以把结果设为2^0+2^3。我认为你的输出二进制字符串是颠倒的。串应该是00001001,你应该把高位放在串的前面,低位放在串的后面。因为第一个位是1,所以结果加2^0,第四个元素是1,所以结果加2^3。然后你就得到结果了