У меня есть текстовый файл, хранящийся локально. Я хочу хранить строковые данные в двоичном формате, а затем снова извлекать данные. В следующем фрагменте кода я выполнил преобразование.Проблемы с написанием формата байтов строковых данных в текстовом файле в C#
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
class ConsoleApplication
{
const string fileName = "AppSettings.dat";
static void Main()
{
string someText = "settings";
byte[] byteArray = Encoding.UTF8.GetBytes(someText);
int byteArrayLenght = byteArray.Length;
using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create)))
{
writer.Write(someText);
}
byte[] x = new byte[byteArrayLenght];
if (File.Exists(fileName))
{
using (BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open)))
{
x = reader.ReadBytes(byteArrayLenght);
}
string str = Encoding.UTF8.GetString(x);
Console.Write(str);
Console.ReadKey();
}
}
}
В AppSettings.dat файл байты записываются следующим образом
Но когда я присвоили случайное значение в массив байтов и сохранить его в файл, используя BinaryWriter, как я сделано в следующем фрагменте кода
const string fileName = "AppSettings.dat";
static void Main()
{
byte[] array = new byte[8];
Random random = new Random();
random.NextBytes(array);
using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create)))
{
writer.Write(array);
}
}
Это фактически сохраняются данные в двоичном формате в текстовом файле, как показано на рисунке.
Я не понимаю, почему (в моем первом случае) данные байт, преобразованные из строки, отображающие человеческий читаемый формат, где я хочу сохранить данные в нечитаемом формате байта (в дальнейшем случае). Какое объяснение по этому поводу?
Есть ли способ, в котором я могу хранить строковые данные в двоичном формате без приближения к грубой силе?
FYI - Я не хочу хранить данные в формате Base64String, я хочу, чтобы он был в двоичном формате.
Ваш первый файл _is_ двоичный, в некотором роде. Так получилось, что байты представляют собой текст, читаемый человеком. «F» и «F» в вашем втором примере также читаются человеком, но вы как-то называете второй файл «двоичным». –
В зависимости от кодировки ваши байтовые значения могут быть читаемыми человеком или, возможно, нет. Посмотрите, например, на [список символов UTF-8] (http://www.fileformat.info/info/charset/UTF-8/ list.htm). Вы заметите, что есть много символов, которые нельзя напечатать на людях, читаемых. – 0xDECAFBAD
Есть ли способ, чтобы я мог хранить их нечетким способом или только в байтовом значении или только 0 и 1 в файле. Любой будет делать. – lukai