如果我想使用字符串来表示十六进制值,有没有办法在它们之间进行按位AND,按位OR等?
我知道有些类型可以处理,但我需要将它们保留为字符串。
答案 0 :(得分:1)
我不知道这种类型。
我通常使用这些方法:
//check if string is in hex format.
bool OnlyHexInString(string text)
{
for (var i = 0; i < text.Length; i++)
{
var current = text[i];
if (!(Char.IsDigit(current) || (current >= 'a' && current <= 'f')))
{
return false;
}
}
return true;
}
从字符串hex到int的转换在这里完成:
public string HexToInt(string hexString)
{
hexString = hexString.Trim();
hexString = hexString.ToLower();
if (hexString.Contains("0x"))
hexString = Regex.Replace(hexString, "0x", "");
if (OnlyHexInString(hexString))
return System.Convert.ToInt64(hexString, 16).ToString();
else
return "";
}
修改1 如果结果不为null或为空,我忘了在结果上添加Int64.Parse()。对不起。
执行您的操作并将结果恢复为十六进制字符串:
public string IntToToHex(string integerAsAString)
{
if (!string.IsNullOrEmpty(integerAsAString))
{
Int64 integerValue = 0;
bool parsed = Int64.TryParse(integerAsAString, out integerValue);
if (parsed)
return integerValue.ToString("X");
else
throw new Exception(string.Format("Couldn't parse {0} hex string!", integerAsAString));
}
else
throw new Exception(string.Format("Couldn't parse {0} hex string!", integerAsAString));
}
答案 1 :(得分:1)
阅读评论并回答后,我选择使用字节数组(感谢Dusan)
我选择的解决方案:
当我需要使用按位运算符,然后返回字符串时,我所要做的就是将字符串转换为字节。
的方式