[20190930]oracle raw类型转化number脚本.txt --//写一个简单oracle raw转化number脚本,简单说明: --//输入必须是c1,02 或者 c102,不支持c1,2格式。 --//raw2num.sh 脚本放在最后. --//测试: $ cat otest.txt | xargs -n 1 -I {} bash -c "./raw2num.sh {};echo {} " | paste - - 0 80 1 c1,02 2 c1,03 25 c1,1a 123 c2,02,18 4100 c2,2a -4100 3d,3c,66 41000000 c4,2a -41000000 3b,3c,66 132004078 c5,02,21,01,29,4f 2.01 c1,03,02 .3 c0,1f .00000125 be,02,1a 115.200003 c2,02,10,15,01,04 -.00000125 41,64,4c,66 -.3 3f,47,66 -1 3e,64,66 -5 3e,60,66 -20032 3c,63,65,45,66 -234.432 3d,63,43,3a,51,66 999999999999999999999999999999999999999900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ff,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64 -999999999999999999999999999999999999990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02 .0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 80,02 -.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 7f,64,66 123456789012345678901234567890123456789000 d5,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b -123456789012345678901234567890123456780000 2a,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b .123456789012345678901234567890123456789 c0,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b -.12345678901234567890123456789012345678 3f,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b $ cat otest.txt 80 c1,02 c1,03 c1,1a c2,02,18 c2,2a 3d,3c,66 c4,2a 3b,3c,66 c5,02,21,01,29,4f c1,03,02 c0,1f be,02,1a c2,02,10,15,01,04 41,64,4c,66 3f,47,66 3e,64,66 3e,60,66 3c,63,65,45,66 3d,63,43,3a,51,66 ff,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64 00,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02 80,02 7f,64,66 d5,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b 2a,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b c0,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b 3f,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b $ cat raw2num.sh #! /bin/bash #! oracle raw convert number odebug=${ODEBUG:-0} # process input parameter ,delete 0x and "," and all spaces. save to variable v_raw. and its length to variable v_len. v_raw="$*" v_raw=${v_raw//0x/} v_raw=${v_raw//[, ]/} v_len=${#v_raw} v_tmp=$(( $v_len % 2 )) if [ $v_tmp -ne 0 -o $v_len -gt 42 ]; then echo "$v_raw is illegal! v_len=$v_len or length of v_len>42" exit 2 fi if [ $odebug -eq 1 ] ; then echo v_ram="$v_raw" fi if [ "$v_raw" == "80" ]; then result=0 echo "$result" exit 0 elif [ "$v_raw" \> "80" ]; then v_res="0." v_exp=$(printf "%2d" $(( "0x"${v_raw:0:2} - 0xc0 ))) if [ $odebug -eq 1 ] ; then echo v_ram="$v_raw" v_exp="$v_exp" v_len="$v_len" fi for ((i=2;i<$v_len;i+=2)) do v_tmp=$(printf "%02d" $(( "0x"${v_raw:i:2} -0x1 ))) if [ $v_tmp -lt 0 -o $v_tmp -gt 99 ]; then echo "$v_raw is illegal! offset $i = 0x${v_raw:i:2}" exit 3 fi if [ $v_tmp -eq 0 -a $i -eq $(( $v_len - 2 )) ];then echo "$v_raw is illegal! offset $i = 0x${v_raw:i:2}" exit 3 fi v_res=${v_res}${v_tmp} done #result=$(echo "scale=132; 100^${v_exp} * ${v_res} " | bc -l | tr -d '\n\\\r' | sed -e "s/\.\([0-9]*[1-9]\)0\+$/.\1/" -e "s/\.0\+$//") else #negative v_res="-0." v_exp=$(printf "%2d" $(( 0xff - "0x"${v_raw:0:2} -0xc0 ))) ## substr last 2 char, normal is 0x66 (102) v_len=$(( $v_len - 2 )) v_last=$(printf "%02d" $(( "0x"${v_raw:v_len:2} ))) if [ $odebug -eq 1 ] ; then echo v_ram="$v_raw" v_exp="$v_exp" v_len-2="$v_len" v_last="$v_last" fi if [ "$v_last" != "102" -a $v_len -lt 40 ]; then echo "$v_raw is illegal! offset $v_len = 0x${v_raw:v_len:2}" exit 4 fi for ((i=2;i<$v_len;i+=2)) do v_tmp=$(printf "%02d" $(( 0x65 - "0x"${v_raw:i:2} ))) if [ $v_tmp -lt 0 -o $v_tmp -gt 99 ]; then echo "$v_raw is illegal! offset $i = 0x${v_raw:i:2}" exit 3 fi if [ $v_tmp -eq 0 -a $i -eq $(( $v_len - 2 )) ];then echo "$v_raw is illegal! offset $i = 0x${v_raw:i:2}" exit 3 fi v_res=${v_res}${v_tmp} done if [ $v_len -eq 42 -a "$v_last" != '102' ]; then v_tmp=$(printf "%02d" $(( 101 - $v_last ))) if [ $v_tmp -le 0 -o $v_tmp -gt 99 ]; then echo "$v_raw is illegal! offset $v_len = 0x${v_raw:v_len:2}" exit 3 fi v_res=${v_res}${v_last} fi #result=$(echo "scale=132; 100^${v_exp} * ${v_res} " | bc -l | tr -d '\n\\\r' | sed -e "s/\.\([0-9]*[1-9]\)0\+$/.\1/" -e "s/\.0\+$//") fi if [ $odebug -eq 1 ] ; then echo v_ram="$v_raw" v_exp="$v_exp" v_len="$v_len" v_res="$v_res" fi result=$(echo "scale=132; 100^${v_exp} * ${v_res} " | bc -l | tr -d '\n\\\r' | sed -e "s/\.\([0-9]*[1-9]\)0\+$/.\1/" -e "s/\.0\+$//") echo "$result"
[20190930]oracle raw类型转化number脚本.txt
来源:这里教程网
时间:2026-03-03 14:14:55
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 从零开始入门 K8s| 详解 Pod 及容器设计模式
从零开始入门 K8s| 详解 Pod 及容器设计模式
26-03-03 - 大数据量删除的思考(三)
大数据量删除的思考(三)
26-03-03 - oracle for windows 静默模式打补丁未指定响应文件报错OUI-67073
- 万物到家的万亿零售新蓝海
万物到家的万亿零售新蓝海
26-03-03 - 网易云音乐融资后:存量红利时代如何破局?
网易云音乐融资后:存量红利时代如何破局?
26-03-03 - 一张图轻松掌握 Flink on YARN 应用启动全流程(上)
一张图轻松掌握 Flink on YARN 应用启动全流程(上)
26-03-03 - Oracle 密码永不过期设置
Oracle 密码永不过期设置
26-03-03 - 国产全面屏扎堆,而iPhone却一直延续刘海屏,真实原因有4个
国产全面屏扎堆,而iPhone却一直延续刘海屏,真实原因有4个
26-03-03 - 千元机难道真的不好吗?那是你没有入手合适的机型,比如说这几款
千元机难道真的不好吗?那是你没有入手合适的机型,比如说这几款
26-03-03 - Oracle 19c 在线缩减 UNDO 表空间 容量
Oracle 19c 在线缩减 UNDO 表空间 容量
26-03-03
