Разбор массива байт соответственно форматирующей строке - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д