将double值转换为C中的char数组

如何在C中将double值转换为char数组?

double a=2.132; char arr[8]; 

有没有办法在标准C中这样做? 谁能提供任何解决方案?

如果您要存储双重DATA,而不是可读表示,那么:

 #include  double a=2.132; char arr[sizeof(a)]; memcpy(arr,&a,sizeof(a)); 

要使用人类可读forms表示数字的字符串,请使用snprintf(),如下面的代码所示。

要访问double的字节,请使用union。 例如,union u {double d; char arr [8]; }

但是,根据您添加的评论,也许您的意思是将数字从字符转换为双精度。 请参阅下面的代码中的atof()调用。 该代码生成以下4个输出行:

 ud = 2.132000 u.arr = 75 ffffff93 18 04 56 0e 01 40 res = 2.13200000 ud = 37.456700 u.arr = ffffffa6 0a 46 25 75 ffffffba 42 40 res = 37.45670000 

码:

 #include  #include  union MyUnion { char arr[8]; double d; }; void printUnion (union MyUnion u) { int i; enum { LEN=40 }; char res[LEN]; printf ("ud = %f u.arr = ", ud); for (i=0; i<8; ++i) printf (" %02x", u.arr[i]); printf ("\n"); snprintf (res, LEN, "%4.8f", ud); printf ("res = %s\n", res); } int main(void) { union MyUnion mu = { .d=2.132 }; printUnion (mu); mu.d = atof ("37.4567"); printUnion (mu); return 0; } 

如果有人看到这个,你也可以试试sprintf:

例:

 char charray[200]; double num = 11.1111111111111; sprintf(charray, "%2.13f", num); 

如果您要问的是如何找出哪些字节构成内存中的double值,请尝试以下方法:

 double a=2.132; double darr[1] = { a }; char *arr = (char*) darr; 

虽然你可能想要unsigned char,但不是char

虽然我看到了一些答案,但我想你会看到代码 – 我会使用snprintf,尽管你可能更喜欢更安全的forms:

 snprintf(arr, 8, "%2.4f", a); 

更多这里: http : //msdn.microsoft.com/en-us/library/2ts7cx93(VS.71).aspx

双b = 222.215;

  String bb=""+b; char[] tab=new char[bb.length()]; for(int m=0;m