簡體   English   中英

將double值轉換為C中的char數組

[英]Convert double value to a char array in C

如何在C中將double值轉換為char數組?

double a=2.132;
char arr[8];

有沒有辦法在標准C中這樣做? 誰能提供任何解決方案?

如果您要存儲雙重DATA,而不是可讀表示,那么:

#include <string.h>

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

要使用可讀形式表示數字的字符串,請使用snprintf(),如下面的代碼所示。

要訪問double的字節,請使用union。 例如,union u {double d; char arr [8]; }

但是,根據您添加的評論,也許您的意思是將數字從字符轉換為雙精度。 請參閱下面的代碼中的atof()調用。 該代碼生成以下4個輸出行:

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

碼:

#include <stdio.h>
#include <stdlib.h>
union MyUnion { char arr[8];  double d; };

void printUnion (union MyUnion u) {
  int i;
  enum { LEN=40 };
  char res[LEN];
  printf ("u.d = %f     u.arr = ", u.d);
  for (i=0; i<8; ++i)
    printf (" %02x", u.arr[i]);
  printf ("\n");
  snprintf (res, LEN, "%4.8f", u.d);
  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雖然你可能更喜歡更安全的形式:

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<bb.length();m++)
        {
            tab[i]=bb.charAt(m);
        }//un tableau mtn qui contient notre resultat dans un tableua de char

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM