Я пытаюсь найти способ, как преобразовать большой набор единиц и нулей (в текстовой форме) в цифровые и нули в качестве файла вывода.
Самый многообещающий подход, который я пробовалбыло преобразование, скажем, строки 01001101 в десятичное число 77, затем преобразование числа 77 в символ таблицы кодирования M, а затем запись M в новый файл, который создаст файл с цифровыми битами 01001101.Это неудобное решение, однако, портит данные, потому что некоторые двоичные значения не обрабатываются правильно.Вот код:
Эта часть создает текстовые единицы и нули из файла цифровых данных:
$SourceFile = "C:\Users\Admin\Desktop\test.bin"
$TargetFile = "C:\Users\Admin\Desktop\test.bin" + "_clean"
$filestream = New-Object IO.FileStream -ArgumentList $SourceFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read)
$filestream.Position = 0
$bytebuffer = New-Object "Byte[]" -ArgumentList 128
[void]$filestream.Read($bytebuffer, 0, $bytebuffer.Length)
$filestream.Close()
$OnesZeroes = $bytebuffer -split "`n" | ForEach-Object {
[System.Convert]::ToString($_,2).PadLeft(8,'0')
}
Эта часть пытается преобразовать текстовые единицы и нули обратно в цифровые данные:
$RawData = $OnesZeroes | ForEach-Object {[CHAR]([CONVERT]::toint32($_,2))}
$RawData = $RawData -join ""
$OutputRAW = [System.IO.StreamWriter] $TargetFile
$filesize = (Get-Item $SourceFile).length
[void]$OutputRAW.Write($RawData, 0, $filesize)
$OutputRAW.close()
Кто-то может удивиться, почему я пытаюсь выполнить такую странную операцию.Мне нужно статистически обрабатывать и изменять отдельные биты в большом файле, где отдельные части данных не являются целым числом байтов.В частности, для сравнения побитовых первых 1150 битов со вторыми 1150 битами и с третьими 1150 битами и т. Д. В наборе 16x1150 битов, где весь файл имеет около 2000 наборов 16x1150 битов.Я не знаю, как обрабатывать отдельные биты, поэтому я сделал неловкий обходной путь, сначала преобразовав биты в байты «1» и «0».