求指点为什么这里的atol没有效果?该如何解决

求指点为什么这里的atol没有效果?
C/C++ code
    fstream fout;
    fout.open("testout.dat",ios_base::in|ios_base::binary);
    ofstream fout2;
    fout2.open("testout2.dat",ios_base::out|ios_base::binary);
    char ex[4];
    while(1){
        fout.read(ex,5);
        if(fout.eof())break;
        long l=1;
        l=atol(ex);
        l=htonl(l);

        fout2.write(ex,4);
    }
    fout.close();
    fout2.close();


ex里面是12345678,为什么这里的atol没有效果呢?

------解决方案--------------------
楼主蒙了。atol是把字符串转成整形。所以参数是字符串哦