c# 将字符串作为十六进制代码进行操作?
c# manipulating a string as a hex code?
如果我想用字符串来表示十六进制值,有没有办法在它们之间进行按位与、按位或等操作?
我知道有一些类型可以处理,但我需要将它们保留为字符串。
我不知道这种类型。
我通常使用这些方法:
//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
如果结果不为空或为空,我忘记在结果上添加 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));
}
看完评论和回答我选择使用字节数组(感谢Dusan)
我选择的解决方案:
我所要做的就是在需要使用按位运算符时将字符串转换为字节,然后再转换回字符串。
此链接显示了如何 How do I get a consistent byte representation of strings in C# without manually specifying an encoding?
如果我想用字符串来表示十六进制值,有没有办法在它们之间进行按位与、按位或等操作?
我知道有一些类型可以处理,但我需要将它们保留为字符串。
我不知道这种类型。
我通常使用这些方法:
//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 如果结果不为空或为空,我忘记在结果上添加 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));
}
看完评论和回答我选择使用字节数组(感谢Dusan)
我选择的解决方案:
我所要做的就是在需要使用按位运算符时将字符串转换为字节,然后再转换回字符串。
此链接显示了如何 How do I get a consistent byte representation of strings in C# without manually specifying an encoding?