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

时间:2016-11-05 07:57:05

标签: c# byte converter

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

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),那么字符串结果将是&#34; 10010000&#34; ,所以这就是问题,我怎样才能转换字符串&#34; 10010000&#34;回到给定的sbyte?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

首先从字符串中删除所有尾随零,然后使用基数2转换为sbyte。它将返回9。