14 12
发新话题
打印

不知道现有的builtin的工具如何把 char 转成 int

本主题由 dearvoid 于 2008-8-7 18:40 加入精华
写了一个只支持字母和数字的:
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[21637 0]
; cat chr2ascii.sh
#! /bin/bash

chr2ascii()
{
    local chr=$1

    if [[ ! "$chr" == [0-9a-zA-Z] ]]; then
        echo "$chr: [not supported]"
        return 1
    fi

    local n=$(eval echo "\$((64#$chr))")
    if ((n < 10)); then
        ((n += 48))
    elif ((n < 36)); then
        ((n += 87))
    else
        ((n += 29))
    fi
    echo "$chr: $n"
}

for chr; do
    chr2ascii "$chr"
done
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[21637 0]
; ./chr2ascii.sh 0 9 A Z a z +
0: 48
9: 57
A: 65
Z: 90
a: 97
z: 122
+: [not supported]
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[21637 1]
; bye
[ 本帖最后由 dearvoid 于 2008-8-7 18:38 编辑 ]      
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

今日偶得, 共享:
引用:
-(dearvoid@LinuxEden:Forum)-(~/void/bash)-
[$$=3943 $?=0]
; cat chr2ascii.sh
#!/bin/bash

for i; do
    printf 'ord(%s) = %d\n' $i "'$i"
done
-(dearvoid@LinuxEden:Forum)-(~/void/bash)-
[$$=3943 $?=0]
; ./chr2ascii.sh a b c 1 2 3 - +
ord(a) = 97
ord(b) = 98
ord(c) = 99
ord(1) = 49
ord(2) = 50
ord(3) = 51
ord(-) = 45
ord(+) = 43
-(dearvoid@LinuxEden:Forum)-(~/void/bash)-
[$$=3943 $?=0]
; bye
      
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

[ 鲜花6朵]
引用:
printf 'ord(%s) = %d\n' $i "'$i"
最后一个单引号是啥用法?
printf支持的格式转化居然是这么方便

dearvoid有心了, 火星帖都被你翻出来了      
面包会有的 女人也会有的
_______________________

TOP

我也不知道这是什么用法, 文档里未见说明, 跟别人学的
虽然这个帖子很老了, 俺可一直都挂念着这个问题呢       
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

 14 12
发新话题