当前位置: 技术问答>linux和unix
ASCII/ANSI转字符串的问题
来源: 互联网 发布时间:2017-03-10
本文导语: 我在Shell下取得字符串"41 42 43 44 ..."(所获取的数据均属于ASCII/ANSI相同部分),现在企图把这个字符串转换成"ABCD...",网上找得一段代码: #!/bin/sh hex2oct() { echo "obase=8; ibase=16; $1" | bc } printf \`hex2oct 41`...
我在Shell下取得字符串"41 42 43 44 ..."(所获取的数据均属于ASCII/ANSI相同部分),现在企图把这个字符串转换成"ABCD...",网上找得一段代码:
这段代码能正确显示ASCII码41的字符串A,但是当遇到多个ASCII码放在一起的时候,我实在不知道怎么拆分再转换再拼接起来,而且我需要把返回结果存在一个变量里面供再使用,也不知道这个printf能不能满足要求。
本人初学Linux和Shell,希望大家不吝赐教!谢谢!
#!/bin/sh
hex2oct()
{
echo "obase=8; ibase=16; $1" | bc
}
printf \`hex2oct 41`
这段代码能正确显示ASCII码41的字符串A,但是当遇到多个ASCII码放在一起的时候,我实在不知道怎么拆分再转换再拼接起来,而且我需要把返回结果存在一个变量里面供再使用,也不知道这个printf能不能满足要求。
本人初学Linux和Shell,希望大家不吝赐教!谢谢!
|
lz 有这么多勋章,真厉害。
根据 lz 现有的代码做更改:
根据 lz 现有的代码做更改:
[nicenight@CSDN ~]# ./test.sh
A B C D
[nicenight@CSDN ~]# cat test.sh
#!/bin/sh
hex2char()
{
printf \$(echo "obase=8; ibase=16; $1" | bc)
}
function test()
{
local str
for i in $@
do
str="$str $(hex2char $i)"
done
echo $str
}
a="41 42 43 44"
b=$(test $a)
|
#!/usr/bin/perl -w
use strict;
use warnings;
my $buf;
my $fmt;
$buf = "41 42 43 44";
$buf =~ s/ //g;
$fmt = sprintf("H[%d]", length($buf));
print pack($fmt, $buf), "n";
|
使用ghex打开个文本(注意非空)
$ghex test
把16进制贴在左边,右边马上就转换完成
ctrl+s保存
打开test后为转换后字符
$ghex test
把16进制贴在左边,右边马上就转换完成
ctrl+s保存
打开test后为转换后字符