C#-位数组到十六进制
我有大小不同的C#-位数组到十六进制,c#,.net,C#,.net,我有大小不同的位数组,我想得到十六进制字符串的转换。 我曾尝试将位数组转换为字节[],但没有给出正确的格式。() 例如,一个12的位数组,我希望字符串是A8C(3个十六进制,因为是12位) 谢谢提供的解决方案正确无误 BitArray arr = new BitArray(new int[] { 12 }); byte[] data1 = new byte[100]; arr.CopyTo(data1, 0); string hex
位数组
,我想得到十六进制字符串的转换。我曾尝试将
位数组
转换为字节[]
,但没有给出正确的格式。()
例如,一个12的位数组,我希望字符串是A8C(3个十六进制,因为是12位)
谢谢提供的解决方案正确无误
BitArray arr = new BitArray(new int[] { 12 });
byte[] data1 = new byte[100];
arr.CopyTo(data1, 0);
string hex = BitConverter.ToString(data1);
你可以直接试试
StringBuilder sb = new StringBuilder(bits.Length / 4);
for (int i = 0; i < bits.Length; i += 4) {
int v = (bits[i] ? 8 : 0) |
(bits[i + 1] ? 4 : 0) |
(bits[i + 2] ? 2 : 0) |
(bits[i + 3] ? 1 : 0);
sb.Append(v.ToString("x1")); // Or "X1"
}
String result = sb.ToString();
StringBuilder sb=新的StringBuilder(bit.Length/4);
对于(int i=0;i
我为BitArray实现了三种有用的扩展方法,它们可以实现您想要的功能:
public static byte[] ConvertToByteArray(this BitArray bitArray)
{
byte[] bytes = new byte[(int)Math.Ceiling(bitArray.Count / 8.0)];
bitArray.CopyTo(bytes, 0);
return bytes;
}
public static int ConvertToInt32(this BitArray bitArray)
{
var bytes = bitArray.ConvertToByteArray();
int result = 0;
foreach (var item in bytes)
{
result += item;
}
return result;
}
public static string ConvertToHexadecimal(this BitArray bitArray)
{
return bitArray.ConvertToInt32().ToString("X");
}
如果BitArray
的大小为13
,那么您是否可以将结果字符串的长度修剪为Math.Ceil(BitArray.length/4.0)
?@DmitryBychenkoBitArray
是4的倍数此解决方案适用于8的倍数的BitArray。但对于12岁的孩子来说,这是行不通的