2017-03-22 242 views
0

我使用Atmel Studio進行C語言編程(對於那些不熟悉它的人來說,它被用於編程到微控制器,比如arduino),你不能簡單地打印,你必須發送數據。串行到應用程序如終端)從uint8_t *轉換爲char * C

我到目前爲止有:

uint8_t * stackHolder; 
char buffer[128]; 
stackHolder = &buffer[127]; 

讓我們說的buffer[127]地址恰好是0x207。我可以看到使用調試器的stackHolder的值是0x207。我有一個功能,需要一個char *並打印。所以我的問題是如何將uint8_t * stackHolder轉換爲char *,以便我可以將它傳遞給我的打印功能?

+0

C不支持_methods_。當然你不使用C++?你爲什麼要轉換一個指針? – Olaf

+2

類型之間的轉換是鑄造的目的。 –

+1

也許你需要將這些有符號和無符號的'char'類型轉換爲'int'來獲得全部範圍。 –

回答

6

如何將uint8_t * stackHolder轉換爲char *

通過casting

print((char*) stackHolder); 
3

我有需要一個char *

推薦最小化投射到一個位置,以實現目標並保留函數簽名類型檢查的方法。用cast創建一個包裝函數。

// OP's original function 
extern void skyleguy_Print(char *); 

void skyleguy_Print_u8(uint8_t *s) { 
    skyleguy_Print((char *) s); 
}