С технической точки зрения, стандарт C гарантирует, что sizeof (char) == 1, а остальная часть - до реализации. Но на современных архитектурах x86 (например, чипы Intel / AMD) это довольно предсказуемо.
Возможно, вы слышали, что процессоры описываются как 16-разрядные, 32-разрядные, 64-разрядные и т. Д. Это обычно означает, что процессор использует N-биты для целых чисел. Поскольку указатели хранят адреса памяти, а адреса памяти - целые числа, это эффективно говорит вам, сколько бит будет использоваться для указателей. sizeof обычно измеряется в байтах, поэтому код, скомпилированный для 32-разрядных процессоров, будет сообщать размер указателей 4 (32 бит / 8 бит на каждый байт), а код для 64-разрядных процессоров будет сообщать размер указателей 8 (64 бит / 8 бит на байт). В этом случае ограничение на 4 ГБ ОЗУ для 32-разрядных процессоров исходит из - если каждый адрес памяти соответствует байту, для обращения к большему количеству памяти вам нужны целые числа, превышающие 32 бит.
Прочитайте их внутри вашего контроллера, преобразуйте их в массив и вернитесь в представление. Там вы можете использовать ветку с циклом for для отображения индекса и значения.