这种东西还真的少有人写,其实是转换成16进制的,研究后把代码贴给你,希望给你有用,也给后人做参考(代码部分请保存为UTF8格式,为便于显示,控制台输出我指定为GB2312),如果格式为GB2312,需要加载Encode模块,使用语句encode("utf-8", decode("gb2312", $str))进行转换。
---------------------------------------------CODE-------------------------------------
#!/usr/bin/perl
$|=1
use URI::Escape qw(uri_escape_utf8)
use encoding 'utf8', STDIN=>'utf8', STDOUT=>'gb2312'
my $str="~~我有一所房子,面朝大海,春暖花开..."
for my $i(0..length($str)-1) {
if (ord(substr($str,$i,1))<0xFF){
print substr($str,$i,1)
} else {
print sprintf("&#x%1x",ord(substr($str,$i,1)))
}
}
--------------------------------------------------------------------------------------
输出为:~~我有一所房子,面朝大海,春暖花开...
use utf8use 5.14.2
use encoding 'utf8', STDOUT => 'gb2312'
my $str = "ab中国"
if ($str =~/([ab]+)(.*)$/) {
say $1
say $2
}
data segmentgcdb 18H,31H,05H,06H,09H,0AH,0CH,11H,12H,14H定义格雷码表
result db ?,?,"$"存放转换后的格雷码
data ends
code segment
assume ds:data,cs:code
start:mov ax,data
mov ds,ax
lea bx,gc
next:mov ah,1从键盘输入一个字符
int 21h
cmp al,30h判断输入的字符是否是0~9之间,若不是,则重新输入
jb next
cmp al,39h
ja next
sub al,30h若是,则将其ASCII码转换成数字0~9
xlat查表得到所输入数字的格雷码
mov ah,al
mov cl,4
shr ah,cl
add ah,30h
mov result+1,ah存入result单元中
and al,0fh
add al,30h
mov result,al
lea dx,result将转换后的格雷码在屏幕上输出
mov ah,9
int 21h
mov ax,4c00h程序结束
int 21h
code ends
end start
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)