C# 位数组(16)到十六进制字符串
我正在尝试将位数组转换为十六进制字符串 我的测试位数组是“0000001010000000”,它应该返回十六进制的“0280” 尝试了以下操作:C# 位数组(16)到十六进制字符串,c#,C#,我正在尝试将位数组转换为十六进制字符串 我的测试位数组是“0000001010000000”,它应该返回十六进制的“0280” 尝试了以下操作: BitArray b = new BitArray(16); b.Set(7, true); b.Set(9, true); 然后,通过检查我创建的BitArray对象,得到对应于该二进制字符串的640十进制值 但是我找不到把它转换成十六进制的方法 我避免使用不同类的字节数组 这是可行的,但有点复杂,我相信一定有更简单的方法,我不明白为什么我必须切换
BitArray b = new BitArray(16);
b.Set(7, true);
b.Set(9, true);
然后,通过检查我创建的BitArray对象,得到对应于该二进制字符串的640十进制值
但是我找不到把它转换成十六进制的方法
我避免使用不同类的字节数组
这是可行的,但有点复杂,我相信一定有更简单的方法,我不明白为什么我必须切换值
byte[] bytes = new byte[2];
b.CopyTo(bytes, 0);
string Retorno = BitConverter.ToString(bytes);
string[] auxstr = Retorno.Split('-');
Retorno = auxstr[1] + "-" + auxstr[0];
有什么建议吗?试试这个
string binary = "0000001010000000";
StringBuilder hexvalue= new StringBuilder(binary.Length / 8 + 1);
int Len = binary.Length % 8;
if (Len != 0)
{
binary = binary.PadLeft(((binary.Length / 8) + 1) * 8, '0');
}
for (int i = 0; i < binary.Length; i += 8)
{
string Bits = binary.Substring(i, 8);
hexvalue.AppendFormat("{0:X2}", Convert.ToByte(Bits , 2));
}
binary = hexvalue.ToString();
stringbinary=“000000 1010000000”;
StringBuilder hexvalue=新的StringBuilder(binary.Length/8+1);
int Len=二进制。长度为%8;
如果(Len!=0)
{
binary=binary.PadLeft(((binary.Length/8)+1)*8,'0');
}
对于(int i=0;i
然后,通过检查我创建的BitArray对象,得到对应于该二进制字符串的640十进制值
所以您只想创建十六进制值的字符串表示形式?这样做很容易:
int dec = 640;
string s = Convert.ToString(dec, 16);
甚至string s=$“{dec:X}”代码>
对于前导零(如您在问题中所示),最好是
string s = $"{dec:X4}";
请注意,640
作为十六进制是280
而不是208
,正如您在问题中所述
获取位数组
的“值”的一个简单方法是(对于长度b?1位数组集和字符串表示形式不相同
您编写了0000001010000000
,实际设置如下:
BitArray b = new BitArray(16);
b.Set(6, true);
b.Set(8, true);
但您的代码:
BitArray b = new BitArray(16);
b.Set(7, true);
b.Set(9, true);
实际生成这组数字:
000000011000000
如果要复制十六进制0280
,则应执行以下操作:
BitArray b = new BitArray(16);
b.Set(6, true);
b.Set(8, true);
var @string = String.Concat(b.Cast<bool>().Select(x=> { return x ? '1' : '0'; }));
var result = Convert.ToInt32(@string, 2).ToString("X4");
BitArray b=新的位数组(16);
b、 设置(6,真);
b、 设置(8,正确);
var@string=string.Concat(b.Cast().Select(x=>{return x?'1':'0';}));
var result=Convert.ToInt32(@string,2).ToString(“X4”);
其中,result
将具有此值0280
请查看,这样您就可以将其转换为字节[]
像in一样,单独格式化字节。调用StringBuilder
的构造函数时,不需要指定容量。另外,关于这一操作的一些解释可能对OP非常方便。有点,但我确实需要从位数组中获取十进制数first@VyacheslavShcherbakov是吗我回答的最后一行做你想做的?或者你需要更大的阵列吗?非常感谢
BitArray b = new BitArray(16);
b.Set(6, true);
b.Set(8, true);
var @string = String.Concat(b.Cast<bool>().Select(x=> { return x ? '1' : '0'; }));
var result = Convert.ToInt32(@string, 2).ToString("X4");