在c#中将字符串转换为二进制序列,当不是8位char时使用零填充
本文关键字:char 8位 填充 字符串 转换 二进制 | 更新日期: 2023-09-27 17:52:48
我使用我在其中一个问题中看到的这种方法将ascii转换为二进制字符串:
public string GetBits(string input)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in ASCIIEncoding.UTF8.GetBytes(input))
{
sb.Append(Convert.ToString(b, 2));
}
return sb.ToString();
}
但是,如果输入类似下面的消息,其中包含像'space'或其他字符:
"Hello, How are you?"
上面的方法是建立一个6位或7位的序列。当我试图解码长序列(我知道每8位是一个字符)我得到一个大问题,部分消息字符是6或7或8位,一切都混在一起。我该如何改进它?由于
public string GetBits(string input)
{
return string.Concat(input.Select(x => Convert.ToString(x, 2).PadLeft(8, '0')));
}
你的问题是前导零。如果您想为每个字符返回8位,那么您必须添加前导零。我在你的案例中使用了PadLeft。
public string GetBits(string input)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in ASCIIEncoding.UTF8.GetBytes(input))
{
sb.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
}
return sb.ToString();
}