char陣列轉化為十進位制整數

2021-09-25 12:53:22 字數 1553 閱讀 3961

通過一些通訊方式傳輸的資料(比如:串列埠傳輸),有時候會儲存為char型別的資料資料,我們需要把char陣列中的所有資料轉化為int整數,方法一是直接通過移位運算來實現:

char c[4] = ;  

char t;

int num = 0;

int len = sizeof(c) / 2;

char d[sizeof(c) / 2];

for (int i = 0, j = 0; j < sizeof(c); i++, j += 2)

d[i] = (c[j] << 4) | c[j + 1];

for (int i = 0, j = len - 1; i < len / 2; i++, j--)

t = d[i], d[i] = d[j], d[j] = t;

strncpy((char*)& num, d, len);

cout << num << endl;

結果直接儲存在整數int中

使用這種方法最好確認一下:

char陣列中儲存的值在記憶體中為數值的十六進製制方式顯示,而不是ascii碼方式顯示,

可以看到char nn陣列中儲存為3fff,在記憶體中的現實方式為十六進製制數字方式顯示,才能計算出正確的num結果。

如果在函式呼叫中,傳遞的引數為ascii碼顯示,就是用直接對應的關係組成相對應的實際數字。

可以看到用區域性引數char c陣列去接受dac_buffer傳遞進來的3fff引數,儲存在記憶體中為ascii碼顯示,運算的為實際十進位制數的**為:

u32 dac_total= 0;  

u32 dac_0 =(u32)dac_buffer[0] ;

u32 dac_1 =(u32)dac_buffer[1] ;

u32 dac_2 =(u32)dac_buffer[2] ;

u32 dac_3 =(u32)dac_buffer[3] ;

switch(dac_0)

switch(dac_1)

switch(dac_2)

switch(dac_3)

我這裡是對3fff進行還原為實際對應的十進位制數,dac_total儲存結果。

用xilinx sdk進行引數傳遞會把接受到的引數用ascii碼表示,常規理解應該用十六進製制來表示(在visual studio中就是這樣),但是不知道為什麼在這個ied中會使用ascii碼來儲存

十進位制整數轉化R進製整數

棧結構的邏輯結構為線性的,可建立鏈式結構使得入棧 出棧的操作是動態的,也可以很好地實現進製的轉換。而且進製轉換恰好和棧的輸入輸出輸出類似,故選擇棧是最好的。功能 該函式實現建立初始化的棧。具體過程 1.建立乙個棧結構體指標s 2.將s指標指向的s top賦予 1,即定義棧頂初始為空。功能 該函式實現...

棧 十進位制轉化為任意制

include include define stack init size 100 define size increment 5 typedef struct 棧結構 sqstack,sqstack int stackinit sqstack s 初始化棧 int push sqstack s,...

十進位制轉化為二進位制

今天我們來實現乙個有趣的小案例。要求 任意輸入乙個正十進位制數把它轉化為二進位制數輸出。我這裡使用了遞迴演算法 def transit num,binary 十進位制轉化為二進位制 param num 輸入的10進製 return none if num 2 remainder num 2 num ...