;-- TIME_STAMP   2019-03-26 15:12:34   v 0.1

#include-once
#include '_BinaryMidBitOp.au3'

_Example()

Func _Example()
	Local $dGreen = Binary('0x29A01E2B3C100607070A0301'), $dBinary = $dGreen, $iMid, $iValue

	ConsoleWrite('----------------------------------------------------------------------------------------------------------------' & @CRLF)
	ConsoleWrite(StringFormat('@ %36s $dGreen  = "%s"\n', '', $dGreen))
	ConsoleWrite(StringFormat('@ %36s $dBinary = "%s"\n', '', $dBinary))
	ConsoleWrite(StringFormat('@ %64s\n', '/\/\/\/\/\...'))
	ConsoleWrite(StringFormat('@ %64s\n\n', '0102030405...'))

	$iMid = 4
	$iValue = BinaryMid($dGreen, 5, 1)
	$dBinary = _BinaryMidAND($dBinary, $iMid, $iValue)
	_Print('> AND', $iValue, $iMid, '$dBinary', $dBinary, @error ? '@error = ' & @error : '($dBinary = $dGreen) = ' & ($dBinary = $dGreen))
	$iValue = BinaryMid($dGreen, 4, 1)
	$dBinary = _BinaryMidOR($dBinary, $iMid, $iValue)
	_Print('- OR ', $iValue, $iMid, '$dBinary', $dBinary, @error ? '@error = ' & @error : '($dBinary = $dGreen) = ' & ($dBinary = $dGreen))

	$iMid = 1
	$iValue = 0x23
	$dBinary = _BinaryMidXOR($dBinary, $iMid, $iValue)
	_Print('! XOR', $iValue, $iMid, '$dBinary', $dBinary, @error ? '@error = ' & @error : '($dBinary = $dGreen) = ' & ($dBinary = $dGreen))
	$dBinary = _BinaryMidXOR($dBinary, $iMid, $iValue)
	_Print('! XOR', $iValue, $iMid, '$dBinary', $dBinary, @error ? '@error = ' & @error : '($dBinary = $dGreen) = ' & ($dBinary = $dGreen))

	$iMid = 3
	$iValue = '0x03'
	$dBinary = _BinaryMidNOT($dBinary, $iMid)
	_Print('+ NOT', $iValue, $iMid, '$dBinary', $dBinary, @error ? '@error = ' & @error : '($dBinary = $dGreen) = ' & ($dBinary = $dGreen))
	ConsoleWrite('----------------------------------------------------------------------------------------------------------------' & @CRLF)
EndFunc  ;==>_Example

Func _Print($sColor, $iValue, $iMid, $sVar, $dBinary, $sMsg)
	ConsoleWrite(StringFormat('%s %4i $iMid = %3i BinaryLen = %3i %s = %-32s\t%s\n', $sColor, $iValue, $iMid, BinaryLen($dBinary), $sVar, '"'&$dBinary&'"', $sMsg))
EndFunc  ;==>_Print
