将字符串类型的十六进制值转换为字节并将它们与

Convert hex value of type string to byte and AND them

我有两个价值观。 十六进制的一个字符串。另一个二进制字符串。必须将第一个字符串转换为二进制并将 "AND" 应用于它们。

string mask = "2F"; // binary value of hex would be 0010 1111
string binary = "0010 0000";

// 将掩码转换为二进制

string binaryMask = ConvertToString(mask); // result must be 0010 1111;

string result = binaryMask & binary; // AND them both - result : 0010 0000

我找到了解决方案

string value = "2F";
string value2 = "00100000";

int value1Int = Convert.ToInt32(value, 16);
int value2Int = Convert.ToInt32(value2, 2);

var and = value1Int & value2Int;
var hex = and.ToString("X");

首先,从 binary 字符串中删除空格(如果您不确定输入,可以删除两个字符串上的空格):

string mask = "2F";

/* You can use "0010 0000".Trim().Replace(" ", ""); 
   to make sure there is no whitespace at beginning/end 
   of the string */
string binary = "0010 0000".Replace(" ", ""); 

将两个值都转换为数字:

// You can use .TryParse() here, to make sure if input is valid.
var a = short.Parse(mask, System.Globalization.NumberStyles.HexNumber); 
// or var a = Convert.ToInt32(mask, 16);
var b = Convert.ToInt32(binary, 2);

应用AND运算符:

var c = a & b;

再次将结果转换为string

string result = Convert.ToString(c, 2);

输出:

100000