我使用以下方法从字符串中创建位,但现在我正在尝试执行相反的操作,但我不知道该怎么做?
public string GetBits(string input)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in Encoding.Unicode.GetBytes(input))
{
sb.Append(Convert.ToString(b, 2));
}
return sb.ToString();
}
我想传入位串并创建字符串。
最佳答案
您的 GetBits 方法无法正常工作 - 它不会为每个字节转换 8 位。
作为粗略的修复,您可以使用 PadLeft。这是完整的解决方案:
// Fixed version of GetBits, with padding.
public static string GetBits(string input)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in Encoding.Unicode.GetBytes(input))
{
string lowBits = Convert.ToString(b, 2);
string eightBits = lowBits.PadLeft(8, '0');
sb.Append(eightBits);
}
return sb.ToString();
}
public static string UnicodeBitsToString(string input)
{
return Encoding.Unicode.GetString(ParseHex(input));
}
public static byte[] ParseHex(string input)
{
byte[] ret = new byte[input.Length/8];
for (int i=0; i < input.Length; i += 8)
{
ret[i/8] = Convert.ToByte(input.Substring(i, 8), 2);
}
return ret;
}
不过这有点令人讨厌 - 我相信您可以提高它的效率。尽管如此,如果它完成了您需要它做的...
关于c# - 如何从位创建字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/656072/