c#将字符串作为十六进制代码操作?

时间:2015-06-11 13:18:11

标签: c# hex

如果我想使用字符串来表示十六进制值,有没有办法在它们之间进行按位AND,按位OR等?

我知道有些类型可以处理,但我需要将它们保留为字符串。

2 个答案:

答案 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)

我选择的解决方案:

当我需要使用按位运算符,然后返回字符串时,我所要做的就是将字符串转换为字节。

此链接显示了How do I get a consistent byte representation of strings in C# without manually specifying an encoding?

的方式