前の日 / 次の日 / 最新 / 2009-08

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
の処理が抜けている。