//将float转为4byte数据
void Set_Float_TO_Buf(float val,unsigned char *buff)
{
float xval;
unsigned int i;
unsigned char *S;
xval=val;
S= ( unsigned char* )( &xval );
for( i=0; i<4; i++ ) buff[i]=*(S+i);
}
//将4byte数据转为float
float Get_Float_From_Buf(unsigned char *buff)
{
float xval;
unsigned int i;
unsigned char *S;
S= ( unsigned char* )( &xval );
for(i=0;i<4;i++) *(S+i)=*(buff+i);
return xval;
}
void Set_Float_TO_Buf(float val,unsigned char *buff)
{
memcpy(buff,&val,sizeof(val));
}
float Get_Float_From_Buf(unsigned char *buff)
{
float xval;
memcpy(&xval,buff,sizeof(xval));
return xval;
}
很简单,用sprintf即可,看代码:
#include
using namespace std;
int main(){
float a;
while(cin>>a){
char s[100];
sprintf(s,"%f",a);
cout<}
}
貌似不太可以呢!char型占一个字节,float占4个字节。如果将超过char范围的float数据转换成char型,那么必然会丢失。
char str[40];
float f=10323.323;
sprintf( str, "%f", f);
float t;
(char)t;