新手~存到txt文件里面的16进制数与数组中的不同,不知咋回事?求高手!

新手求助~~~~~存到txt文件里面的16进制数与数组中的不同,不知怎么回事?求高手!!
程序是这样的:
//将数组存成txt文档
 int k;  
FILE *fp;

 if((fp=fopen("E:\\receivedata.txt","w+"))!=NULL)  
{  

for(k=21; k<length; k++)  
{  
fprintf(fp,"%x ",receivedata[k]);  
}  
fclose(fp);  
}  
else  
{  
MessageBox("写文件 receivedata.txt 失败!", "错误");  
//printf("写文件 a.txt 失败!\n"); //控制台程序使用这行  
}  


receivedata[]中的比如是{90 eb 01 02 00 56...},
在文档中收到的是{ffffff90 ffffffeb 1 2 0 56...}发现大于7的前面都加ffffff了,第一个是0的,0都没有了(01,02变成1,2)
不知道是怎么回事~
求高手!!!!

------解决方案--------------------
估计是你数组里的数有问题,或者下标不对应
------解决方案--------------------
receivedata[]什么类型的?? 用unsigned系列比较好
memset过没?