[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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20170308]bc做xor(異或)計算.txt
- [20191010]bash行計算器.txt
- [20190929]bash使用bc計算的相關問題.txt
- 異或運算 XOR 教程
- bash shell計算時間差
- [20191012]使用bash從sql_id計算hash_value.txtSQL
- [20211009]使用bash計算sql語句的sql_id.txtSQL
- [20191011]通過bash計算sql語句的sql_id.txtSQL
- BASH版Base64實現
- 大文字平行計算實現方式
- htmltest~計算器介面的實現HTML
- 計算幾何_向量的實現
- Bash 優良程式設計實踐程式設計
- python 計算txt文字詞頻率Python
- bash shell 實現快速排序演算法排序演算法
- 用c++實現淨現值的計算C++
- BUUCTF xor
- C++實現簡易計算器C++
- 逆波蘭計算器分析和實現
- PLSQL實現計算圓的面積SQL
- PLSQL實現計算某數的平方SQL
- 計算機如何實現開根號?計算機
- Oracle中實現圓周率計算(三)Oracle
- Oracle中實現圓周率計算(二)Oracle
- Oracle中實現圓周率計算(一)Oracle
- 用NodeJS實現叢集計算NodeJS
- 16_簡單計算器實現
- bash shell實現2048小遊戲詳解遊戲
- 實現報表資料預先計算
- 按揭貸款的計算原理與java實現Java
- C++ 實現簡略計算π的程式C++
- Java利用Scanner 加Swich實現計算器Java
- PPT實現資料錄入與計算
- 用EXCEL來實現多層計算模型Excel模型
- 表示式計算原始碼JAVA實現 (轉)原始碼Java
- 實現跨鏈支援的多節點計算去中心化計算網路中心化
- 雲端計算實現物聯網的核心,雲端計算應該怎麼學?
- Flutter實現一個較好看的計算器Flutter