Разбор массива байт соответственно форматирующей строке - C#

Узнай цену своей работы

Формулировка задачи:

пробую так:
        public static int ScanPack2(byte[] buff, ref int idx, string fs, ref dynamic[] v)
        {
            for (int i = 0; i < fs.Length; i++)
            {
                switch (fs[i])
                {
                    case 'c':
                        if (v[i] != null) v[i] = (byte)buff[idx];
                        idx += 1;
                        break;
 
                    case 'h':
                        if (v[i] != null) v[i] = BitConverter.ToInt16(buff, idx);
                        idx += 2;
                        break;
 
                    case 'd':
                        if (v[i] != null) v[i] = BitConverter.ToInt32(buff, idx);
                        idx += 4;
                        break;
 
                    case 'q':
                        if (v[i] != null) v[i] = BitConverter.ToInt64(buff, idx);
                        idx += 8;
                        break;
 
                    case 's':
                        v[i] = (string)ByteArrayToString(buff, ref idx);
                        break;
 
                    default: return idx;
                }
            }
            return idx;
        }
индекс вычисляется верно, но данные не записываются в елементы массива при возвращении из функции, может я какое ключевое слово пропустил?
ну что, на столько глупый вопрос что нет ответа?)

Решение задачи: «Разбор массива байт соответственно форматирующей строке»

textual
Листинг программы
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct S
{
    public int a;
    public ulong b;
    public short c;
}
static unsafe T read<T>(byte[] buff) 
{
    fixed (byte* p = buff)
    {
        return (T)Marshal.PtrToStructure(new IntPtr(p), typeof(T));
    }            
}
unsafe static void Main(string[] args)
{
    byte[] buff = new byte[100];
    S s = read<S>(buff);            
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы