分享
 
 
 

pack/unpack用法----心得筆記

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

最近在看perlpacktut的document,整理了下面的文章,

希望對大家有幫助,瞭解pack/unpack怎麼用...

還沒寫完..後面跟C有關係..

======================================

Pack 與unpack使用說明:

資料?碓凑詐erlpacktut,初學perl的時候,想必大家對於pack與unpack都不是很瞭解,因此本人擷取perldoc裡面的文章,為各位簡單說明pack與unpack的使用方法:首先定義一下pack與unpack:pack可視為將一系列的片段的數值打包在一起,可用於對dev檔案、socket、memory的讀寫,因為這些需要一塊完整的memory,而且需要事先打包成特定格式;而unpack可以視為將將這些完整的 memory切割計算,取得我們所需要各部分的Variable。例子如下:

print pack(“H2”x10,map{ “3$_” } (0..9);

得到

0123456789

因為ASCII中30~39代表數字0-9。所以pack後可以得到ascii編碼的0->9,而我們可以利用unpack將string作逆向操作。

print unpack(“H*”,”0123456789”);

得到

30313233343536373839

同樣的作法可以用在中文字中,至是你要注意OS的編碼格式,UTF-8、GB2312、Big5得到的數值?K不會相同。

Pack與unpack也可以用在對於對於固定格式的文件作處理的情形下:

代码:

Date |Description | Income|Expenditure

01/24/2001 Ahmed's Camel Emporium 1147.99

01/28/2001 Flea spray 24.99

01/29/2001 Camel rides to tourists 235.00

看到上面格式,想必大家很多人都用用substr將固定欄位中的字串取出?恚蚶糜悬c點複雜的Regular Expression將上面的文件欄位匹配出?恚鴮?際上我們要將上面欄位一個一個匹配出?砜梢杂靡恍懈愣╘

例子:

while(<FF>){

my($date,$desc,$income,$expend) = unpack(“A10xA27xA7xA*”);

}

簡單說明:A表示ASCII,A10表示10個ASCII character,x表示null byte也等於skip a byte,也就是說我們要跳過一個char(|),然後接著27個ASCII char,然後跳過一個vhar,再接上7個ASCII,在跳過一個char,最後A*表示不管後面char有多少個,我全含括進?怼

這樣子就可以得到各個欄位相對應的資料,很簡單吧!:) 不需要什麼太多的技巧,一行搞定。之後將income與expend作加總,得到total_income、total_expend,數值,然後再輸出的時候,如果也要格式對稱,要怎麼辦?大多數人都會用format或sprintf,然後一行一行很辛苦的,將結果輸出。其

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有