【发布时间】:2016-12-16 10:20:35
【问题描述】:
我有两个长度为 8 位的十六进制字符串。如何对这两个进行& 操作并得到十六进制结果:
40003019 & FE000000 => 40000000
我已尝试将十六进制字符串转换为字节数组并进行单独操作
byte & byte 产生字节,在这种情况下,我分别获得 4 个字节。我正在寻找直接的十六进制结果。
我该怎么做?
var byteResult = new byte[4];
var byteArray1 = StringToByteArray("40003019");
var byteArray2 = StringToByteArray("FE000000");
for(int i = 0 ; i< 4; i++)
{
byteResult[i] = (byte)(byteArray1[i] & byteArray1[i]);
}
public static byte[] StringToByteArray(string hex)
{
return Enumerable.Range(0, hex.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
.ToArray();
}
【问题讨论】:
-
你有没有试过的代码?
-
听起来你应该解析每个字符串,执行按位 &,然后格式化结果...
-
我尝试将十六进制字符串转换为长度为 4 的字节数组并进行单独的字节 & 操作并生成字节。但我正在寻找直接的十六进制和操作。
-
这是另一种方法: UInt32 a = UInt32.Parse("40003019", System.Globalization.NumberStyles.HexNumber); UInt32 b = UInt32.Parse("FE000000", System.Globalization.NumberStyles.HexNumber); Console.WriteLine((a & b).ToString("x8")); Console.ReadLine();