我想将字符串转换为二进制,我尝试了这段代码
byte[] arr = System.Text.Encoding.ASCII.GetBytes(aa[i]);
和这个
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] arr= encoding.GetBytes(aa[i]);
但它返回的数字不是二进制数 如果我写'm'它将它转换为“0109” 我想转换为0和0只有一个 提前致谢
答案 0 :(得分:15)
以下是一个例子:
foreach (char c in "Test")
Console.WriteLine(Convert.ToString(c, 2).PadLeft(8, '0'));
答案 1 :(得分:3)
我不确定我是否完全理解您的问题,但如果您想将文本转换为二进制文件,那就是如何完成的:
public byte[] ToBinary(string stringPassed)
{
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
return encoding.GetBytes(stringPassed);
}
您需要传递整个字符串,而不是字符串中的字符。
答案 2 :(得分:1)
你可以使用: Convert.ToByte(string value,int fromBase)
根据MSDN:
fromBase 键入:System.Int32 值的基数,必须为2,8,10或16。
有关详情,请参阅此链接:Convert.ToByte()
答案 3 :(得分:1)
所以你可以得到字节,现在你想输出0和1。
单个byte b
var sb = new StringBuilder();
for(var i=7;i>=0;i--)
{
sb.Append((b & (1<<i))==0?'0':'1');
}
答案 4 :(得分:0)
这样的事应该对你有用;
static string bytes2bin( byte[] bytes )
{
StringBuilder buffer = new StringBuilder(bytes.Length*8) ;
foreach ( byte b in bytes )
{
buffer.Append(lookup[b]) ;
}
string binary = buffer.ToString() ;
return binary ;
}
static readonly string[] lookup = InitLookup() ;
private static string[] InitLookup()
{
string[] instance = new string[1+byte.MaxValue] ;
StringBuilder buffer = new StringBuilder("00000000") ;
for ( int i = 0 ; i < instance.Length ; ++i )
{
buffer[0] = (char)( '0' + ((i>>7)&1) ) ;
buffer[1] = (char)( '0' + ((i>>6)&1) ) ;
buffer[2] = (char)( '0' + ((i>>5)&1) ) ;
buffer[3] = (char)( '0' + ((i>>4)&1) ) ;
buffer[4] = (char)( '0' + ((i>>3)&1) ) ;
buffer[5] = (char)( '0' + ((i>>2)&1) ) ;
buffer[6] = (char)( '0' + ((i>>1)&1) ) ;
buffer[7] = (char)( '0' + ((i>>0)&1) ) ;
instance[i] = buffer.ToString() ;
}
return instance ;
}