- 论坛徽章:
- 1
|
vec 是什么意思?
http://www.perldoc.com/perl5.6/pod/func/vec.html
注意看他的範例...用二進制去想這個例子..你就會看懂了...
vec($expression,$offset,$bits) = XXX;
借用他的例子...
## $foo為空string
my $foo = '';
## 從offset 0,以32bits為一個unit(或稱Vector),
## 將0x5065726C填入..$foo
vec($foo, 0, 32) = 0x5065726C; # 'Perl'
# $foo eq "erl" eq "\x50\x65\x72\x6C", -->;32 bits(8X32)
##將$foo的offset 0 前8個bits,打印出來...得到\0x50=ord('P');
print vec($foo, 0, ; # prints 80 == 0x50 == ord('P')
##以16個bits為一個vec...在offset 2個vec的地方將0x5065填入
## $foo,所以會得到'PerlPe'...因為Pe兩個字等於16的bits..
## 'rl' 16個bits..所以在offset 2個vec的地放加上Pe..得到下面的結果..
## 其他以此類推...非常簡單..
vec($foo, 2, 16) = 0x5065; # 'PerlPe'
vec($foo, 3, 16) = 0x726C; # 'PerlPerl'
vec($foo, 8, = 0x50; # 'PerlPerlP'
vec($foo, 9, = 0x65; # 'PerlPerlPe'
vec($foo, 20, 4) = 2; # 'PerlPerlPe' . "\x02"
vec($foo, 21, 4) = 7; # 'PerlPerlPer'
# 'r' is "\x72"
vec($foo, 45, 2) = 3; # 'PerlPerlPer' . "\x0c"
vec($foo, 93, 1) = 1; # 'PerlPerlPer' . "\x2c"
vec($foo, 94, 1) = 1; # 'PerlPerlPerl'
# 'l' is "\x6c"
另外你會看到最下面他有用unpack..應該是要將16進位碼..轉成英文字..
與列印整齊用的...
其他細節請看perl相關書籍... |
|