微控制器C語言怎樣把double型轉換為char型資料

2022-06-10 08:27:29 字數 4036 閱讀 9195

1樓:匿名使用者

微控制器不清楚,我只知道在我的機子上可以用如下方法#include "stdio.h"

#include "string.h"

void main() 或者

#include "stdio.h"

#include "string.h"

union a;

void main()

2樓:鄭州條碼收款機

lxb200709 你那個絕對錯誤,

double a=0.37;

char b;

你能直接 b= (char) a;????

一樓雖然麻煩,但是確實正確的。

3樓:匿名使用者

lxb200709 正解!

鄭州條碼收款機 說得不對

1.樓主提出的問題是要轉換成char型,並不是取出相應8個位元組內的數。

2.對於你提出那個疑問也很容易解決,可以在轉換前根據想保留的有效位位數對源數乘以乙個倍數。再說了這能成問題麼?樓主並沒有說轉換後的資料要再做什麼用,可能樓主並不需要多高的精度

4樓:匿名使用者

和c裡一樣如

doulbe a;

char b;

b=(char)a;

不過注意不要溢位。。。

5樓:小a笑

將double型資料用char字串形式處理

微控制器c語言中如何將浮點型變數轉換成字串輸出

6樓:

得出的值先儲存到乙個變數中 如結果為a= 4.234 如果要保留兩位小數的話

unsigned int a=4.234*100;

unsigned char s[5];

s[0]=a/100+0x30;

s[1]='.'

s[1]=a%100/10+0x30;

s[2]=a%10+0x30;

7樓:

計算的結果(小數)比如0.33 依次顯示『0』『.』『3』『3』不就行了。

8樓:匿名使用者

用sprinft()

函式實現

微控制器c語言中char轉換成char[]陣列的問題請教

9樓:匿名使用者

示範一下,供參考

uchar * chang(uchar dat)return(b);

}至於x=1234之類的可以呼叫中的 atof(char *str)來實現。

10樓:

微控制器的p1口是八位 乙個字元佔乙個位元組 也是八位 所以你取得p1口的值就沒必要轉換陣列啊 乙個字元就夠了啊

11樓:專注本地資訊

第一種情況如下:

char a=0xaa;

char b[8];

int j[8]=;

for(i=7;i>=0;i--)

12樓:記住一座城

把每一位分離出來就可以了

c語言浮點型轉換為整型怎麼轉換的?

13樓:匿名使用者

第一種是bai利用系統預設的轉換,du即將小數部分zhi截去dao,僅保留整數部分回,如3.6轉換答為3,-5.68轉換為5。

第二種是強制型別轉換,效果與第一種相同,如(int)(-6.666)為-6。

如有其他特殊要求,則需要程式設計解決。

14樓:匿名使用者

c語言中沒有四捨五入,將浮點型轉換成整形時,只保留小數點前面的數值

15樓:匿名使用者

float ftemp;

不要後面bai

的=0;因為一旦你分配du給ftemp了值,它zhi是無法通過dao鍵盤寫入的方式賦給

回的,因為空答間已經被占用。這不是a=b+c這樣表示式的賦值。

暈,難道要我把源**給你你直接複製?

那就給你吧!

#include

void main()

隨便輸入乙個數,然後回車,看結果

16樓:程式猿3號

c語言復有以下幾種取整方法:

1、直接制賦值給整bai

數變數。如:

int i = 2.5; 或 i = (int) 2.5;

這種du方法採用的zhi是捨去小數部分,能dao用於你的問題。

2、c/c++中的整數除法運算子「/」本身就有取整功能(int / int),而下面介紹的取整函式返回值是double。整數除法對正數的取整是捨去小數部分,能用於你的問題。不過整數除法對負數的取整結果和使用的c編譯器有關。

3、使用floor函式。floor(x)返回的是小於或等於x的最大整數。如:

floor(2.5) = 2

floor(-2.5) = -3

4、使用ceil函式。ceil(x)返回的是大於x的最小整數。如:

ceil(2.5) = 3

ceil(-2.5) = -2

floor()是向負無窮大捨入,floor(-2.5) = -3;ceil()是向正無窮大捨入,ceil(-2.5) = -2。floor函式能用於你的問題。

5、int b = (int)a;//取整int c = (int)(a+0.5);//四捨五入

51微控制器中c語言int能轉換為unsigned char 指標型別嗎?怎麼轉換?

17樓:匿名使用者

1、可以轉換,強制轉換就行。例如:

int a=100;

unsigned char * c = (unsigned char *)a;

2、強制型別轉換

當運算元的型別不同,而且不屬於基本資料型別時,經常需要強制型別轉換,將運算元轉化為所需要的型別。強制型別轉換具有兩種形式,稱為顯式強制轉換和隱式強制型別轉換。

顯式強制型別轉換

顯式強制型別轉換需要使用強制型別轉換運算子,格式如下:

type()

或(type)

其中,type為型別描述符,如int,float等。為表示式。經強制型別轉換運算子運算後,返回乙個具有type型別的數值,這種強制型別轉換操作並不改變運算元本身,運算後運算元本身未改變,例如:

int nvar=0xab65;

char cchar=char (nvar);

上述強制型別轉換的結果是將整型值0xab65的高階兩個位元組刪掉,將低端兩個位元組的內容作為char型數值賦值給變數cchar,而經過型別轉換後nvar的值並未改變。

18樓:匿名使用者

可以呀,將高位和地位分別賦值給兩個char變數就可以了。例如:

int x;

unsigned char al,ah;

al=x%256;

ah=x/256;

19樓:匿名使用者

可以,就是拿這個int當成指向unsigned char的指標位址,舉例如下:

int x;

unsigned char c;

c=*((unsigned char *)x); //讀取x位址指向的字元

20樓:匿名使用者

要看什麼樣的微控制器。如果要轉換的話,可以如下:

int a=0x5bce;

unsigned char *p;

p = (unsigned char *)a;

要看你的ram和rom是多大的,有些是單個位元組,那轉換完,可能會丟掉高位的。就是說0x5b會不見了,只剩下個0xce;注意點使用。

希望我的回答對你有幫助,有什麼問題歡迎一起**。

21樓:匿名使用者

可以,直接使用就好了。

unsigned char a;

int addr;

a=(unsigned char *)addr;

微控制器C語言程式

define uint unsigned int就是用unit替換unsigned int,unsigned int是c語言關鍵字,unit比較簡單 void delayms uint x 定義乙個函式,無返回值,引數是個 無符號整形的變數叫 x uchar 上面不是定義了unsigned char...

C語言微控制器程式求助

void main 這種方法原理簡單易行,缺點是精度比定時器稍低,注意不要使x y溢位。我們還可以對上面的程式優化 void main 用計數器做!和中斷 中斷設定成 邊沿觸發中斷 在中斷的同時開啟計數器,並判斷是此時高電平還是低電平,然後等到下乙個中斷到來,將計數器的內容另存,然後清空重新計數 這...

微控制器c語言轉化為組合語言

下列程式已經除錯過,樓主試試看 key1 equ p2.4 按鍵.org 0000h jmp start org 001bh jmp t1 int start mov tmod,10h t1定時方式1 mov th1,65536 20000 256 20ms 12mhz mov tl1,65536 ...