Некоторые языки программирования имеют поддержку строк, которые хранятся в folows: Хранение двоичных данных в строках - идеологически неправильно?
Например, AnsiString типа в Delphi. Эти строки удобно управляются, и можно подумать, что это хорошая идея использовать их в качестве контейнера для двоичных данных, так как есть некоторые эффективные операции по конкатенации, извлечению подстроки и т. Д.
Как-то у меня сильное чувство, что используя строковый тип, даже если он двоично-безопасный, для хранения двоичных данных идеологически неправильно, но я не могу найти никаких убедительных аргументов для защиты этой позиции.
Конечно, на таких языках, как PHP, где использование массивов фактически добавляет слишком много служебных данных (каждый член массива в PHP занимает около 50 байт памяти из-за хэшированного характера массивов), у вас нет другого выбора, кроме как использовать строки как двоичные контейнеров данных. Но что касается Delphi или C++ (с его std :: string), я думаю, что сохранение двоичных данных в строках (например, ключи шифрования шифрования или любой буфер двоичного протокола) неверно, даже если у вас есть техническая возможность сделать это.
Как вы думаете? Есть ли аргументы против хранения двоичных данных в строках?
Можно утверждать, что в C все строки являются только двоичными данными, а двоичные данные «строки» довольно распространены. Но опять же, строки C - это всего лишь частный случай байтовых массивов. –
Да, вы правы. Но я не говорю о C здесь. Ах ... В Cактивно, все просто память, вы знаете;)) Никаких типов вообще;) :) –
Извините за то, что написал по старому вопросу, но если у меня есть строка «001», и я хочу сохранить его в двоичный файл или файл .dat, как я могу просто вывести строку как 3 бита вместо двоичного представления строки? –