Я немного новичок в c #, и я искал несколько идей для 2 вещей.Я искал ответы повсюду, но не нашел ответа на мою точную проблему.
У меня есть байтовый массив (называемый 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";
(а также для представления этой информации в битах (булево), так что {00000011 10111011,00000011 11001011, ...etc})
Второе, что я должен сделать, - это сдвинуть эти два байта на 4 и применить и вентиль AND с FFF0 (что аналогично умножению первого байта * 1,и второе на 0xF0).Затем поместите это в ushort [] (беззнаковый короткий массив), который содержит преобразованные байты в двоичном формате, а затем конвертируйте его обратно в HEX.
Я понимаю, что это может быть неясно(мой код немного грязный) и довольно сложный.но я надеялся, что некоторые из вас, гуру #, могут протянуть мне руку.
Вот мой код, я добавил в комментарии биты, которые не работают, поэтому код выполняется.но мне отчаянно нужно их починить.
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;
}
}