dtostrf 將字節和浮點數轉換為char


在任何其他C / C ++平台中,當您要使用printf或其同級元素打印(或轉換為字符串)浮點數時,可以將“%f”用作格式說明符任何,除了在Arduino中。

要轉換浮點,您需要使用dtostrf()

char * dtostrf( double __val, signed char __width, unsigned char __prec, char * __s)

dtostrf()函數將在val中傳遞的雙精度值轉換為ASCII表示形式,並將其存儲在s下。調用方負責提供足夠的存儲空間。

轉換以“ [-] d.ddd”格式進行。輸出字符串的最小字段寬度(包括可能的“。”和可能的負值符號)以寬度給出,prec確定小數點后的位數。寬度是帶符號的值,向左調整為負。

dtostrf()函數將指針返回轉換后的字符串s。

要將字節(或任何非浮點數)轉換為ascii,請使用 snprintf()

int snprintf ( char * s, size_t n, const char * format, ... );

將格式化的輸出寫入大小已設置的緩沖區。

如果在printf上使用了format,則使用與要打印的文本相同的字符串組成一個字符串,但是內容將作為C字符串存儲在由s指向的緩沖區中(而不是被打印)(將n作為要填充的最大緩沖區容量)。

您可以自己閱讀詳細信息,但這是一個演示。

這個想法是產生buffer一個傳統的C風格的字符串(空終止)。您可以打印或傳輸的字符串。

浮點值分兩步打印。首先,我們dtostrf將浮點值轉換為他的ascii表示形式。然后,我們snprintf將該值(作為字符串)包含在整行中,然后打印出來。

void setup() { Serial.begin(9600); while(!Serial); Serial.println("Start"); float value = 123.45; byte balue = 128; char buffer[80]; char fValue[16]; dtostrf(value, 3, 2, fValue); snprintf(buffer, sizeof(buffer), "float %s", fValue); Serial.println(buffer); snprintf(buffer, sizeof(buffer), "byte value is %d", (int) balue); Serial.println(buffer); } void loop() { }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM