十六进制到位[]数组(也称为bool[])

本文关键字:bool 数组 十六进制 | 更新日期: 2023-09-27 18:02:08

我对c#有点陌生,我正在寻找一些关于两件事的想法。我已经到处寻找答案,但还没有找到我的问题的确切答案。

  1. 我有一个字节数组(称为BA)在一个for循环中,它一直覆盖自己,没有办法让我能够打印它作为一个整个数组。是否有一种方法可以在for循环之外导出它(可能使用不同的名称),以便我可以稍后在程序中使用它?我想要这样的内容:

    byte[] BA2 = {3 187,3 203,111 32, ...etc}; //(groups of 2bytes separated by commas).
    

    选自原文

    string hexValues = "03 BB,03 CB,6F 20,57 6F,72 6C,64 21";
    

  2. 我必须做的第二件事是将这两个字节移动4,并使用FFF0应用and门(这与第一个字节乘以1相同,第二个乘以0xF0)。然后将其放入ushort[](无符号短数组)中,该数组以二进制格式保存转换后的字节,然后从那里将其转换回HEX。

我知道这可能不清楚(我的代码有点乱),而且相当复杂。但是我希望你们中的一些c#大师能帮我一把。

这是我的代码到目前为止,我已经把注释位不工作,所以代码运行。但我迫切需要修复它们。

class Program
{
    static void Main(string[] args)
    {
        string hexValues = "03 BB,03 CB,6F 20,57 6F,72 6C,64 21";
        string[] hex2byte = hexValues.Split(',');
        for (int j = 0; j < 6; j++)
        {
            Console.WriteLine("'n2 byte String is: "+ hex2byte[j]);
            string[] hex1byte = hex2byte[j].Split(' ');
            for (int k = 0; k < 2; k++)
            {
                Console.WriteLine("byte " + hex1byte[k]);
                byte[] BA = StringToByteArray((hex1byte[k]));
                //bool[] AA = BitConverter.ToBoolean(BA);           // I'm essentially stuck here. I need somehting which actually works.
                //for (int i2 = 0; i2 < 2; i2++);                   // This is my attemp to perform de shift and AND.
                //{
                //    ushort[] X = new ushort[1];
                //    X[0] = (ushort)((ushort)(BA[0] << 4) + (ushort)((BA[1] & 0xF0) >> 4));        // They have to be in this order: ((1stByte & 0xFF) << 4) + ((2byte & 0xF0) >> 4); first to the left then the right.
                //}
                Console.WriteLine("Converted " + BA[0]);
            }
        }
        //Console.WriteLine(BA[4]);               // it says: Does not exist in current context. Can it only b accesed in the for loop?
        Console.ReadKey();
    }   // Main method finishes.

    // Define StringToByteArray method.
    public static byte[] StringToByteArray(String hex)
    {
        int NumberChars = hex.Length;
        byte[] bytes = new byte[NumberChars / 2];
        for (int i = 0; i < NumberChars; i += 2)
        {
            bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
        }
        return bytes;
    }
}

十六进制到位[]数组(也称为bool[])

这是你要找的吗?

string[] hexValues = new string[] { "03BB", "03CB", "6F20", "576F", "726C", "6421" };
ushort result = 0;
for (int i = 0; i < hexValues.Length; i++)
{
    Console.WriteLine("2 byte String is {0}", hexValues[i]);
    result = ushort.Parse(hexValues[i], NumberStyles.AllowHexSpecifier);
    Console.WriteLine("converted: {0}", result.ToString());
    Console.WriteLine("converted: {0}", result.ToString("x")); // "x" format in ToString -> very useful for creating hex strings.
}

你可以使用<<和>>操作符,以及|和&