浮点数组如何转unsigned char型

浮点数组怎么转unsigned char型?
#include <stdlib.h>

typedef unsigned char BYTE;

float a [200] = {..};//里面有200个浮点数
void main()
{
int i;
BYTE b[200];
for(i = 0;i<200;i++)
b[i]=(BYTE)a[i]; //这里这样转怎么不行呢?

for(i = 0; i<200;i++)
{
if((i+1)%10 == 0)printf("\n");
printf("%d ,",a[i]);
}


}

------解决方案--------------------
lz想作甚??float占几个字节,char几个字节??强制类型转换会带来危险滴。
------解决方案--------------------
(1)
BYTE b[200];
for(i = 0;i<200;i++)
b[i]=(BYTE)a[i];
//这个可以强制转换,但是会对浮点数首先去掉小数部分,然后赋值给b[i],但是如果超出b[i](也就是unsigned char )的表示范围则会 进行低位截取
(2)
for(i = 0; i<200;i++),
{
if((i+1)%10 == 0)printf("\n");
printf("%d ,",a[i]);
}
//由于数组a是 float型,但是采用 "%d"格式控制,则会发生错误,输出大多是0,这里建议LZ看看IEEE754
中关于浮点数的存储格式 以及 整型的存储格式,自然明白