Chinaunix

标题: vec 是什么意思? [打印本页]

作者: laoxia    时间: 2003-02-17 05:08
标题: vec 是什么意思?
vec 是什么意思?看书愣没看懂, 请弟兄们出手拉俺一把,最好举个例子
作者: apile    时间: 2003-02-18 22:34
标题: 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相關書籍...
作者: laoxia    时间: 2003-02-19 02:39
标题: vec 是什么意思?
谢谢,SAVE 下来
作者: laoxia    时间: 2003-02-19 05:13
标题: vec 是什么意思?
apile真的感谢,俺老虾终于开了窍也!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2