perl 如何实现同样的编码问题 (encode)

perl 如何实现同样的编码问题 (encode),第1张

这种东西还真的少有人写,其实是转换成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 utf8

use 5.14.2

use encoding 'utf8', STDOUT => 'gb2312'

my $str = "ab中国"

if ($str =~/([ab]+)(.*)$/) {

say $1

say $2

}

data segment

gcdb 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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7861694.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存