size_t
рассматривается как тип для использования, несмотря на то, что он не был официально ратифицирован ни стандартами C, ни C ++.
Основанием для этого является то, что sizeof(values)
будет такого типа (что соответствует в соответствии со стандартами C и C ++), и число элементов обязательно будет не больше этого, поскольку sizeof
] для объекта не менее 1.
Проблема с Вашим подходом для запуска с:
Мне нужно точное значение байтов без кодирования
...
Например, если значение строки (0xFF32)
Это немного похоже на рассмотрение живописи и высказывание, "Я хочу байты для того изображения без кодирования". Это не имеет смысла. Текст не является тем же как двоичными данными. После того как Вы понимаете, что, легко добраться до корня проблемы. То, что Вы действительно хотите, является содержанием файла как массив байтов. Это легко, потому что файлы являются двоичными данными! Вы не должны читать его как текст во-первых, если это не действительно текст. К счастью.NET делает это действительно легким:
byte[] fileC = File.ReadAllBytes(dialog.FileName);
Однако.. проблема, которую я имею, мне нужно точное значение байтов без кодирования просто чистого значения для каждого байта.
Затем используйте это:
byte[] dataB = System.Text.Encoding.Unicode.GetBytes(data);
Это возвращает байты, как сохранено внутренне строками.NET.
Но все это - вздор: строка всегда связывается с конкретным кодированием и нет никакого пути вокруг этого. Вышеупомянутое перестанет работать, например, если файл содержит недопустимые кодовые последовательности Unicode (который может произойти), или через нормализацию. Так как Вы, очевидно, не хотите a string
, не читайте тот. Считайте файл как двоичные данные вместо этого.
Почему преобразовывают из строки вообще? Вы не могли только считать содержание файла непосредственно в байты?
byte[] fileC = File.ReadAllBytes(dialog.FileName);
Если Вы хотите байты, используйте Поток!
С какой стати Вы смешиваете с TextReader?
Править:
Согласно Вашему примеру, Вы открываете файл, поэтому просто используете FileStream.