01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
2009-08-21 Fri
■ chunk をデコード [D言語]
手抜き
byte[] decodeChunked(byte[] src) { byte[] d; size_t spos,epos,cpos,chunkSize; int i; while(1) { cpos = (cast(string)src[spos..$]).indexOf("\r\n") + 2; //チャンクサイズが書いてある行を取得 epos = spos + cpos; if(src.length < epos) break; chunkSize = strtol((cast(string)src[spos..epos]).ptr,null,16); //チャンクサイズを取得 d ~= src[epos..epos+chunkSize]; //チャンクサイズ分追加 spos = epos+chunkSize+2; if(src.length < spos) break; } return d; }
strtol のエラー処理
chunk extension
trailer
の処理が抜けている。