Эти две платформы должны в какой-то степени согласиться на представление char
, чтобы вы могли перенести файл из одной в другую.
Так что не существует "полностью переносимого" способа сделатьэто - например, предположим, что char
- это 16 бит на платформе, которая пишет, и 8 бит на платформе, которая читает, тогда, очевидно, вы не можете вообще передавать символы из одного в другой.Либо это вообще невозможно сделать (16-разрядный символ предлагает DSP, он может не иметь файлового или потокового ввода-вывода), либо есть какое-то согласованное правило, как преобразовать файл при его передаче.
Также должно быть либо соглашение о том, что такое набор символов выполнения, либо средство преобразования файла между (например) EBCDIC и ASCII.В противном случае запись a
на одной стороне не приведет к прочтению a
на другой.
Как только вы установили правила соответствия char
на каждой стороне, это говорит вамчто вы можете читать и писать.Если разница only состоит в том, что подпись char
изменяется, но они оба используют один и тот же набор символов, просто проверьте, соответствует ли подписанный знак отрицательным значениям.
Предполагая, что это такТаким образом, единственным общепринятым способом (дополнение к двум), и предположим, что обе стороны преобразуют целые числа без знака в целые числа со знаком единственным общепринятым способом (заново интерпретируют битовый шаблон), тогда вы можете просто читать и писать char
обычно с обеих сторонс фактически теми же результатами, что и приведение между unsigned char
и signed char
.