hex2binで16進数を4桁の2進数へ変換する
proc ANDMask args {
set data [hex2bin [lindex $args 0]]
set mask [hex2bin [lindex $args 1]]
set maskLength [string length $mask]
set dataList [splitRange $data $maskLength]
set result ""
foreach buffer $dataList {
for {set index 0} {$index < $maskLength} {incr index} {
set dataBit [string range $buffer $index $index]
set maskBit [string range $mask $index $index]
#マスク対象のデータがなくなったら終了
if {[string length $dataBit] != 0} {
append result [expr $dataBit && $maskBit]
} else {break}
#puts "DEBUG dataBit:$dataBit maskBit:$maskBit result:[string range $result end end]"
}
}
return [bin2hex $result]
}
proc ORMask args {
set data [hex2bin [lindex $args 0]]
set mask [hex2bin [lindex $args 1]]
set maskLength [string length $mask]
set dataList [splitRange $data $maskLength]
set result ""
foreach buffer $dataList {
for {set index 0} {$index < $maskLength} {incr index} {
set dataBit [string range $buffer $index $index]
set maskBit [string range $mask $index $index]
#マスク対象のデータがなくなったら終了
if {[string length $dataBit] != 0} {
append result [expr $dataBit || $maskBit]
} else {break}
#puts "DEBUG dataBit:$dataBit maskBit:$maskBit result:[string range $result end end]"
}
}
return [bin2hex $result]
}