BBS-complangawk/329

トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

Can we convert a char to ascii in awk - blacky (2006年07月16日 02時49分58秒)

ASCII を CHAR にする方法はありますが、CHAR を ASCII に変更する方法はありますか?

http://groups.google.co.jp/group/comp.lang.awk/browse_frm/thread/82d84a213bb0d42f/4dbf5bb93fbb20f1?hl=ja#4dbf5bb93fbb20f1


Re: - Kenny McCormack? (2006年07月16日 02時51分08秒)

awk のバージョンに依存しますが、gawk ならできます。tawk は組み込み関数としてできます。

Re: - Andrew Schorr (2006年07月16日 02時52分01秒)

xgawk であれば簡単にできます。

bash-3.00$ xgawk -lordchr 'BEGIN {x = "A"; print ord(x); print
chr(ord(x))}'
65
A

Re: - Chris F.A. Johnson (2006年07月16日 02時53分17秒)

shell を使ってもいいのであれば、

awk -v SQ="'" '{
  cmd="printf \"%d\\n\" \"" SQ $1 "\""
  system( cmd )
}'

とすれば、shell で

printf "%s\n" "'$CHAR"

が実行されます。

Re: - John DuBois? (2006年07月16日 02時55分02秒)

function asc(c,
        tchar, ascval, b) {
    if (c == "")
        return ""
    c = substr(c, 1, 1)
    ascval = b = 128
    while ((tchar = sprintf("%c", ascval)) != c)
        ascval += (b /= 2) * (tchar < c) ? 1 : -1
    return int(ascval)
}

のようにしてできます。