在c#中,我將byte
轉換爲binary
,實際答案爲00111111
,但給出的結果爲111111
。現在我真的需要在前面顯示2個0。誰能告訴我如何做到這一點?將字節轉換爲c中的二進制字符串#
我使用:
Convert.ToString(byteArray[20],2)
和字節值是63
在c#中,我將byte
轉換爲binary
,實際答案爲00111111
,但給出的結果爲111111
。現在我真的需要在前面顯示2個0。誰能告訴我如何做到這一點?將字節轉換爲c中的二進制字符串#
我使用:
Convert.ToString(byteArray[20],2)
和字節值是63
只要改變你的代碼:
string yourByteString = Convert.ToString(byteArray[20], 2).PadLeft(8, '0');
// produces "00111111"
試試這個:
public static String convert(byte b)
{
StringBuilder str = new StringBuilder(8);
int[] bl = new int[8];
for (int i = 0; i < bl.Length; i++)
{
bl[bl.Length - 1 - i] = ((b & (1 << i)) != 0) ? 1 : 0;
}
foreach (int num in bl) str.Append(num);
return str.ToString();
}
如果我理解正確,你有20訴你想轉換的線索,所以這只是你寫的帽子的簡單改變。
要更改單個字節至8字符的字符串:Convert.ToString(x, 2).PadLeft(8, '0')
要更改全排列:
byte[] a = new byte[] { 1, 10, 100, 255, 200, 20, 2 };
string[] b = a.Select(x => Convert.ToString(x, 2).PadLeft(8, '0')).ToArray();
// Returns array:
// 00000010
// 00010100
// 11001000
// 11111111
// 01100100
// 00001010
// 00000001
要改變您的字節數組單個串,用空格隔開的字節:
byte[] a = new byte[] { 1, 10, 100, 255, 200, 20, 2 };
string s = string.Join(" ",
a.Select(x => Convert.ToString(x, 2).PadLeft(8, '0')));
// Returns: 00000001 00001010 01100100 11111111 11001000 00010100 00000010
如果字節排序不正確使用IEnumerable.Reverse():
byte[] a = new byte[] { 1, 10, 100, 255, 200, 20, 2 };
string s = string.Join(" ",
a.Reverse().Select(x => Convert.ToString(x, 2).PadLeft(8, '0')));
// Returns: 00000010 00010100 11001000 11111111 01100100 00001010 00000001
試試這個
public static string ByteArrayToString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
}
相似,但相反:http://stackoverflow.com/questions/72176/using-c-what-is-the-most-efficient-method-of-轉換一個字符串包含bi bi – 2010-08-27 19:33:17