perl学习笔记06_进制转换

1. 使用sprintf, printf

1.1: 10进制 -> 非10进制

my $num = 10;
my $s_hex_low = sprintf "%04x", $num; # 000a, 10进制->16进制小写
my $s_hex_high= sprintf "%04X", $num; # 000A, 10进制->16进制大写
my $s_oct     = sprintf "%04o", $num; # 0012, 10进制->8进制
my $s_bin     = sprintf "%04b", $num; # 1010, 10进制->2进制

#print("$s_hex_low\n");
#print("$s_hex_high\n");
#print("$s_oct\n");
#print("$s_bin\n");

1.2: 非10进制 -> 10进制

my $n_hex = 0x10; # 16进制数
my $n_oct = 010 ; # 8进制数
my $n_bin = 0b10; # 2进制数

my $s_hex2dec = sprintf "%04d", $n_hex; # 0016, 16进制->10进制
my $s_oct2dec = sprintf "%04d", $n_oct; # 0008,  8进制->10进制
my $s_bin2dec = sprintf "%04d", $n_bin; # 0002,  2进制->10进制

#print("$s_hex2dec\n");
#print("$s_oct2dec\n");
#print("$s_bin2dec\n");

2. 使用函数oct, hex

2.1 非10进制->10进制

my $s = "0010";
my $n_hex2dec = oct("0x".$s); # 16, 16进制->10进制
my $n_oct2dec = oct("0" .$s); #  8,  8进制->10进制
my $n_bin2dec = oct("0b".$s); #  2,  2进制->10进制

#print("$n_hex2dec\n");
#print("$n_oct2dec\n");
#print("$n_bin2dec\n");

print oct(10); # 8,  8进制->10进制
print hex(10); #16, 16进制->10进制
posted @ 2023-07-15 17:59  编程驴子  阅读(154)  评论(0编辑  收藏  举报