有关转2进制的问题

.Net技术 码拜 8年前 (2016-05-17) 990次浏览
直接贴代码。
public static string  StringToBinary(string str)
{
byte[] data = Encoding.ASCII .GetBytes(str);
StringBuilder strResult = new StringBuilder(data.Length * 4);
foreach (byte b in data)
{
strResult.Append(Convert.ToString(b, 2).PadLeft(4, “0”));
}
string binary = strResult.ToString();
return binary;

}
本人传入的字符例如是“01”,结果返回的是110000 110001,这是怎么回事?为啥前面多了两个1?

解决方案

10

Convert.ToInt32(str, 2);

这样就行了

10

这俩是字符”0″和”1″的asc值48 49,不是多了俩1

5

百度一下”C# 字符转十六进制”就有很多方法,本人用vb.net,没试过c#转,你试试吧
例如http://www.cnblogs.com/zjbtony/archive/2012/04/13/2445055.html

 /// <summary>
        /// 字符串转16进制字节数组
        /// </summary>
       /// <param name="hexString"></param>
        /// <returns></returns>
        private static byte[] strToToHexByte(string hexString)
        {
             hexString = hexString.Replace(" ", "");
           if ((hexString.Length % 2) != 0)
                 hexString += " ";
            byte[] returnBytes = new byte[hexString.Length / 2];
            for (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            return returnBytes;
         }

10

引用:

本人明白了,那本人要从“01”得到 0000 0001,应该怎么写呢?

            var s = "01";
            Console.WriteLine(s.PadLeft(s.Length + 8 - (s.Length % 8), "0"));

5

string c = string.Format(“{0,4:X4}”, str);

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明有关转2进制的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)