C# C处理十六进制值和二进制转换

C# C处理十六进制值和二进制转换,c#,namespaces,binary,hex,C#,Namespaces,Binary,Hex,例如,有没有一种方法可以处理十六进制值、XORing值和移位字节 我需要整个程序只处理十六进制,如果输入是二进制的,则将其转换为十六进制 有十六进制名称空间吗? 除了使用字符串,还有其他方法表示十六进制吗? 因为我需要计算一些测试的0和1的数量,而不需要将其转换为二进制。所以,它看起来如何并不重要,只要有一种方法可以像十六进制一样处理它 我需要知道可能性和我的选择。可能就是你要找的。可能就是你要找的。十六进制、二进制和十进制是相同对象的不同面,即整数 通过以下方式将十六进制解析为int: int

例如,有没有一种方法可以处理十六进制值、XORing值和移位字节 我需要整个程序只处理十六进制,如果输入是二进制的,则将其转换为十六进制

有十六进制名称空间吗? 除了使用字符串,还有其他方法表示十六进制吗? 因为我需要计算一些测试的0和1的数量,而不需要将其转换为二进制。所以,它看起来如何并不重要,只要有一种方法可以像十六进制一样处理它


我需要知道可能性和我的选择。

可能就是你要找的。

可能就是你要找的。

十六进制、二进制和十进制是相同对象的不同面,即整数

通过以下方式将十六进制解析为int:

int i = int.Parse( "FFFFFF", System.Globalization.NumberStyles.HexNumber );
string s = i.ToString("x");
通过以下方式将int转换为十六进制字符串:

int i = int.Parse( "FFFFFF", System.Globalization.NumberStyles.HexNumber );
string s = i.ToString("x");
可以使用十六进制表示法定义C中的数字:

int i = 0xFFFFFF;

也可用于存储字节。它有AND、OR、XOR和NOT函数。

十六进制、二进制和十进制是同一对象的不同面,即整数

通过以下方式将十六进制解析为int:

int i = int.Parse( "FFFFFF", System.Globalization.NumberStyles.HexNumber );
string s = i.ToString("x");
通过以下方式将int转换为十六进制字符串:

int i = int.Parse( "FFFFFF", System.Globalization.NumberStyles.HexNumber );
string s = i.ToString("x");
可以使用十六进制表示法定义C中的数字:

int i = 0xFFFFFF;

也可用于存储字节。它确实有AND、OR、XOR和NOT函数。

十六进制、十进位、八进制等对计算机来说毫无意义。想要让计算机与HEX一起工作是。。。毫无意义

处理原始数据最合适的数据格式是原语(例如byte,可能是byte[]),或者在更大的组合(例如int/long)中更好,这样可以通过允许您同时处理多个值来节省许多性能。当然,如果您决定使用我不推荐使用的字符串,对于诸如二进制位计数之类的事情,您可以在字符级别处理它,只需预先计算0-9、A-F中设置的位数,然后对该值进行查找

不,没有十六进制名称空间,因为它是冗余的。十六进制只是一个数字;这个数字是相同的,不管我们这些弱智多肉的人怎么想。同样,您也可以使用类似的预生成查找来更改数字,或通过以下方式动态更改:

int i = Convert.ToInt32("f3", 16); // hex to Int32
string hex = i.ToString("x2"); // Int32 to hex

十六进制16、十进制10、八进制8等对计算机来说毫无意义。想要让计算机与HEX一起工作是。。。毫无意义

处理原始数据最合适的数据格式是原语(例如byte,可能是byte[]),或者在更大的组合(例如int/long)中更好,这样可以通过允许您同时处理多个值来节省许多性能。当然,如果您决定使用我不推荐使用的字符串,对于诸如二进制位计数之类的事情,您可以在字符级别处理它,只需预先计算0-9、A-F中设置的位数,然后对该值进行查找

不,没有十六进制名称空间,因为它是冗余的。十六进制只是一个数字;这个数字是相同的,不管我们这些弱智多肉的人怎么想。同样,您也可以使用类似的预生成查找来更改数字,或通过以下方式动态更改:

int i = Convert.ToInt32("f3", 16); // hex to Int32
string hex = i.ToString("x2"); // Int32 to hex

你还没有真正弄清楚你的输入和输出要求是什么,这听起来像是家庭作业,但是:

        var x = 0x1111L;

        /// number of bits that are on
        var ones = 0;

        /// number of bits that are off
        var zeros = 0;

        var bitLength = Marshal.SizeOf(x) * 8;

        while (x > 0)
        {
            if ((x & 1) > 0)
            {
                ones++;
            }
            x >>= 1;
        }

        zeros = bitLength - ones;

        Console.WriteLine("{0} bits are on, {1} are off", ones, zeros);

你还没有真正弄清楚你的输入和输出要求是什么,这听起来像是家庭作业,但是:

        var x = 0x1111L;

        /// number of bits that are on
        var ones = 0;

        /// number of bits that are off
        var zeros = 0;

        var bitLength = Marshal.SizeOf(x) * 8;

        while (x > 0)
        {
            if ((x & 1) > 0)
            {
                ones++;
            }
            x >>= 1;
        }

        zeros = bitLength - ones;

        Console.WriteLine("{0} bits are on, {1} are off", ones, zeros);

这里有一些手动方法

static void ConvertBinToHex(string hexadecimal)
{
    if (hexadecimal.Length == 0)
        return;

    string binary = string.Empty;

    for (int i = 0; i < hexadecimal.Length; i++)
    {
        switch (hexadecimal[i])
        {
            case '0': binary += "0000"; break;
            case '1': binary += "0001"; break;
            case '2': binary += "0010"; break;
            case '3': binary += "0011"; break;
            case '4': binary += "0100"; break;
            case '5': binary += "0101"; break;
            case '6': binary += "0110"; break;
            case '7': binary += "0111"; break;
            case '8': binary += "1000"; break;
            case '9': binary += "1001"; break;
            case 'A': binary += "1010"; break;
            case 'B': binary += "1011"; break;
            case 'C': binary += "1100"; break;
            case 'D': binary += "1101"; break;
            case 'E': binary += "1110"; break;
            case 'F': binary += "1111"; break;

            default:
                break;
        }
    }

    //remove leading zero's
    binary = binary.Trim('0');
    Console.WriteLine(binary);
}

这里有一些手动方法

static void ConvertBinToHex(string hexadecimal)
{
    if (hexadecimal.Length == 0)
        return;

    string binary = string.Empty;

    for (int i = 0; i < hexadecimal.Length; i++)
    {
        switch (hexadecimal[i])
        {
            case '0': binary += "0000"; break;
            case '1': binary += "0001"; break;
            case '2': binary += "0010"; break;
            case '3': binary += "0011"; break;
            case '4': binary += "0100"; break;
            case '5': binary += "0101"; break;
            case '6': binary += "0110"; break;
            case '7': binary += "0111"; break;
            case '8': binary += "1000"; break;
            case '9': binary += "1001"; break;
            case 'A': binary += "1010"; break;
            case 'B': binary += "1011"; break;
            case 'C': binary += "1100"; break;
            case 'D': binary += "1101"; break;
            case 'E': binary += "1110"; break;
            case 'F': binary += "1111"; break;

            default:
                break;
        }
    }

    //remove leading zero's
    binary = binary.Trim('0');
    Console.WriteLine(binary);
}

十六进制和二进制只是晶体管输入的基本电压状态的方便表示。位运算符的适用性是一个完全独立的概念。十六进制和二进制只是晶体管输入的基本电压状态的方便表示。按位运算符的适用性是一个完全独立的概念。@Amait输入一个0和1的字符串,需要将其解析为数字?@Amait Convert.toint32100010101,2.ToStringx@Amait是您输入的一个0和1字符串,您需要将其解析为数字?@Amait Convert.toint32100010101,2.ToStringx;没有家庭作业,伙计,我有工作。客户的要求很模糊,所以在我告诉他们这是不可能的之前,我需要确定,你们所有人都回去处理比特和字节,所以我有点重新体验了。不是我要找的,但谢谢。没有家庭作业,伙计,我有工作。客户的要求很模糊,所以在我告诉他们这是不可能的之前,我需要确定,你们所有人都回去处理比特和字节,所以我有点重新体验了。不是我想要的而是谢谢。