Я работаю над приложением в C # и мне нужно читать и писать из определенного формата файла данных. Единственная проблема на данный момент состоит в том, что формат использует строго однобайтовые символы, и C # продолжает пытаться добавить Unicode, когда я использую записывающее устройство и массив char (который удваивает размер файла, среди других серьезных проблем). Я работал над модификацией кода, чтобы вместо этого использовать байтовые массивы, но это вызывает несколько жалоб при подаче их в древовидное представление и элементы управления сеткой данных, и это включает преобразования и тому подобное.
Я потратил немного времени на поиск в Google, и, похоже, не существует простой typedef, который я мог бы использовать, чтобы заставить тип char
использовать байт для моей программы, по крайней мере, не вызывая дополнительных сложностей.
Есть ли простой способ заставить программу на C # .NET использовать только ASCII и не трогать Unicode?
Позже у меня это почти заработало. Использование ASCIIEncoding
в BinaryReader / Writers привело к устранению большинства проблем (возникли некоторые проблемы с добавлением дополнительного символа к строкам, но я исправил это). У меня есть одна последняя проблема, которая очень мала, но может быть большой: в файле определенный символ (печатается как знак евро) преобразуется в ?
при загрузке / сохранении файлов. Это не проблема в текстах, но если бы это происходило с рекордной длиной, он мог бы изменить размер на килобайт (очевидно, не очень). Я думаю, что это вызвано кодировкой, но если оно пришло из файла, почему оно не вернулось назад?
Точная проблема / результаты таковы:
Ни один из этих результатов не будет работать, поскольку в любом месте файла он может измениться (если 80 изменится на 3F при длине записи int, это может быть разница 65 * (256 ^ 3)). Нехорошо. Я попытался использовать кодировку UTF-8 , полагая, что это очень хорошо решит проблему, но теперь добавляется второй символ, что еще хуже.