Что нового

Как записать бинарные данные в текстовый файл ?

vaf

Новичок
Сообщения
186
Репутация
2
Приветствую всех гуру :smile:
Возникла казалось бы простая задача, но решить не получается.
Необходимо записать в текстовый файл бинарные данные к примеру 00000101
 

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
Вот такой изврат: ;)
Код:
$vVar = 'Hello' ; (5 байт) ~ Должен получиться текст "0100100001100101011011000110110001101111" (5*8=40 байт)
; $vVar = 17

$vVar = _StringRepresentationOfBinary($vVar) ; "$vVar" может быть строкой или числом
MsgBox(64, '@error = ' & @error, 'Это Уже Строка:' & @CR & '"' & $vVar & '"')

Func _StringRepresentationOfBinary($vVar)
	Local $sStr, $bFlag
	Local $aSymbolsTable[16][2] = [ _
			['!0', '0000'], _
			['!1', '0001'], _
			['2', '0010'], _
			['3', '0011'], _
			['4', '0100'], _
			['5', '0101'], _
			['6', '0110'], _
			['7', '0111'], _
			['8', '1000'], _
			['9', '1001'], _
			['A', '1010'], _
			['B', '1011'], _
			['C', '1100'], _
			['D', '1101'], _
			['E', '1110'], _
			['F', '1111']]
	Switch VarGetType($vVar)
		Case 'String' ; Для строки
			$vVar = StringToBinary($vVar)
			$bFlag = True
		Case 'Int32' ; Для целых чисел
			$vVar = Hex($vVar)
		Case Else
			Return SetError(1, 0, '')
	EndSwitch
	$sStr = StringRegExpReplace(StringTrimLeft($vVar, 2), '(?i)([01])', '!$1')
	For $i = 0 To 15
		$sStr = StringRegExpReplace($sStr, '(?i)' & $aSymbolsTable[$i][0], $aSymbolsTable[$i][1])
	Next
	Return ($bFlag ? $sStr : StringRegExpReplace($sStr, '^0+', '')) ; Удаляет ведущие нули
EndFunc   ;==>_StringRepresentationOfBinary

Учтите, что 1 Бит информации у вас превратится в 1 Байт.


Добавлено:
Сообщение автоматически объединено:

vaf сказал(а):
Приветствую всех гуру
Упс, это же не ко мне. :-[
 
Верх