NSUTF8StringEncoding 转码有时候成功,有时失败

NSUTF8StringEncoding 转码有时成功,有时失败
            char *deal;
            deal=(char*)malloc(5);
            memset(deal, 0, 5);
            memcpy(deal, data.bytes+52,4);
            memcpy(deal+4, "\0", 1);
            NSString *dealresult=[NSString stringWithCString:deal encoding:NSUTF8StringEncoding];
对于接收过来的同一数据,转码后dealresult有时有值,有时为nil,不知道问题在哪里?
------解决方案--------------------
同样的数据么?
应该是待转换的数据时不对的
------解决方案--------------------
看看数据里是不是有0,这样转成字符串就结束了
------解决方案--------------------
同样的数据转换怎么会出错呢,这几行代码里面又没有随机函数。被装换的数据不是utf8编码,转换的结果就是nil