[20230428]bash實現xor計算.txt
[20230428]bash實現xor計算.txt
--//昨天使用自己以前寫的指令碼做xor計算,仔細看了自己以前寫的原始碼,這樣寫主要問題呼叫bc次數太多,計算效率很低.
--//http://blog.itpub.net/267265/viewspace-2134945/ => [20170308]bc做xor(異或)計算.txt
$ cat xor.sh
#! /bin/bash
# just play , calc xor!!
s='0'
for i in $(cat $1| tr 'a-f' 'A-F')
do
#echo "obase=16;ibase=16; xor($s,$i)"
echo $i
[ $i != '0000' ] && s=$(echo "obase=16;ibase=16; xor($s,$i)" | bc -l ~/bc/logic.bc)
done
echo -e "\nxor result: $s \n"
--//理論講bash 應該支援xor,以前的學習不仔細,仔細看一些檔案.發現bash本身就支援xor的計算,例子如下:
$ echo $(( 0x5 ^ 0x9 ))
12
--//自己嘗試修改看看.
$ cat xor2.sh
#! /bin/bash
# just play , calc xor!!
s='0'
for i in $(cat $1| tr 'a-f' 'A-F')
do
#echo "obase=16;ibase=16; xor($s,$i)"
echo $i
#[ $i != '0000' ] && s=$(echo "obase=16;ibase=16; xor($s,$i)" | bc -l ~/bc/logic.bc)
[ $i != '0000' ] && s=$((0x$s ^ 0x$i )) && s=$(printf '%04x\n' $s)
done
echo -e "\nxor result: $s \n"
--//測試看看:
1.環境:
SCOTT@book> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
2.測試:
SCOTT@book> select rowid from dept where rownum=1;
ROWID
------------------
AAAVRCAAEAAAACHAAA
SCOTT@book> @ rowid AAAVRCAAEAAAACHAAA
OBJECT FILE BLOCK ROW ROWID_DBA DBA TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
87106 4 135 0 0x1000087 4,135 alter system dump datafile 4 block 135 ;
SCOTT@book> @ bbvi 4 135
BVI_COMMAND
----------------------------------------------------------------------------------------------------
bvi -b 1105920 -s 8192 /mnt/ramdisk/book/users01.dbf
xxd -c16 -g 2 -s 1105920 -l 8192 /mnt/ramdisk/book/users01.dbf
dd if=/mnt/ramdisk/book/users01.dbf bs=8192 skip=135 count=1 of=4_135.dd conv=notrunc 2>/dev/null
od -j 1105920 -N 8192 -t x1 -v /mnt/ramdisk/book/users01.dbf
hexdump -s 1105920 -n 8192 -C -v /mnt/ramdisk/book/users01.dbf
alter system dump datafile '/mnt/ramdisk/book/users01.dbf' block 135;
alter session set events 'immediate trace name set_tsn_p1 level 5';
alter session set events 'immediate trace name buffer level 16777351';
9 rows selected.
$ time xxd -c16 -g 2 -s 1105920 -l 8192 /mnt/ramdisk/book/users01.dbf | cut -c10-48| xor.sh | grep result
xor result: 0
real 0m18.801s
user 0m9.147s
sys 0m8.431s
--//使用舊的xor.sh指令碼計算需要18秒.
$ time xxd -c16 -g 2 -s 1105920 -l 8192 /mnt/ramdisk/book/users01.dbf | cut -c10-48| xor2.sh | grep result
xor result: 0000
real 0m3.853s
user 0m0.539s
sys 0m1.258s
--//而新的xor2.sh指令碼計算需要4秒完成,快了不少.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2949471/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20191010]bash行計算器.txt
- [20181229]bash shell的算術運算 .txt
- [20190929]bash使用bc計算的相關問題.txt
- [20201109]bash shell特殊算術方式.txt
- [20191012]使用bash從sql_id計算hash_value.txtSQL
- [20211009]使用bash計算sql語句的sql_id.txtSQL
- [20191011]通過bash計算sql語句的sql_id.txtSQL
- [20181203]bash here $.txt
- [20180930]bash shell &.txt
- [20210318]bash test (( )) [[ ]].txt
- 異或運算 XOR 教程
- [20190312]bash IFS例子.txt
- [20180413]bash 位置引數.txt
- [20180926]bash與分號.txt
- [20221104]bash exec使用技巧.txt
- [20210908]Reverse Shell with Bash.txt
- [20210207]bash history小技巧.txt
- [20181212]bash shell 字串 補零.txt字串
- [20201116]bash shell IO重定向.txt
- [20210913]bash shell $* and $@ 的區別.txt
- [20190412]bash顯示日期相減.txt
- [20231123]函式與bash shell呼叫.txt函式
- [20201109]here-doc(EOF) in bash.txt
- [20181230]Git Bash啟動緩慢.txtGit
- [20230314]nc reverse bash shell alias.txt
- [20230310]nc reverse bash shell問題.txt
- [20210218]bash echo 建立順序號.txt
- python 計算txt文字詞頻率Python
- [20190821]關於CPU成本計算.txt
- [20211220]sqlplus簡單計算器.txtSQL
- 大文字平行計算實現方式
- [20210507]如何實現.txt
- [20190419]bash單雙引號問題.txt
- [20210324]bash shell value too great for base.txt
- 用c++實現淨現值的計算C++
- [20191127]表 full Hash Value的計算.txt
- C++實現簡易計算器C++
- 16_簡單計算器實現