char
, unsigned char
и signed char
- это разные типы, но все они 8-битные. Теоретически все "буферы" должны быть unsigned char*
. На практике многие функции используют обычный char*
, включая большинство Win32 API. Во всех таких случаях это простой 8-битный массив.
Короче говоря, приведите его свободно.
Случаи, которые на самом деле нуждаются в char
, а не unsigned char
, должны быть очевидны для обнаруживать и обрабатывать.
Согласно комментарию @JJ, у вас также есть std::byte
для необработанных 8-битных вещей без символьных характеристик, аналогично BYTE в Win32.