C語言字串轉十六進製制以及各種型別轉換

2021-10-09 05:13:11 字數 3561 閱讀 6368

1 字串轉十六進製制

**實現:

void

strtohex

(char

*pbdest,

char

*pbsrc,

int nlen)

}

2 十六進製制轉字串

**實現:

void

hextostr

(char

*pszdest,

char

*pbsrc,

int nlen)

pszdest[nlen *2]

='\0';}

//或者:

u16 hex2stringarray (u8 *psrc, u16 srclen, u8 *pobj)

*(pobj + i *2)

='\0'

;return

(i *2)

;}//效果:十六進製制"0x13 0xaa 0x02",轉為字串"13aaa2"。

3 字串轉十進位制

//(1)若帶負號,**實現:

intmy_atoi

(const

char

*str)if(

*str ==

'-')

//第乙個字元若是『-』,說明可能是負數

elseif(

*str ==

'+')

//第乙個字元若是『+』,說明可能是正數

//第乙個字元若不是『+』『-』也不是數字字元,直接返回0

elseif(

*str >=

'9'||

*str <=

'0')

//當遇到非數字字元或遇到『\0』時,結束轉化

while

(*str !=

'\0'

&&*str <=

'9'&&

*str >=

'0')

if(flag ==0)

//負數的情況

return value;

}//效果:字串"-123"轉為"-123"。

//(2)若不帶負號,**實現:

void

strtodec

(uint32_t *pbdest,

char

*pbsrc,

int nlen)

}//效果:字串"123"轉為"123"。

//(3)包含轉為浮點數,**實現:

//m^n函式

//返回值:m^n次方.

u32 nmea_pow

(u8 m,u8 n)

//str轉換為數字,以','或者'*'結束

//buf:數字儲存區

//dx:小數點位數,返回給呼叫函式

//返回值:轉換後的數值

intnmea_str2num

(u8 *buf,u8*dx)

//是負數if(

*p==

','||

(*p==

'*')

)break

;//遇到結束了if(

*p==

'.')

//遇到小數點了

elseif(

*p>

'9'||

(*p<

'0')

)//有非法字元

if(mask&

0x01

)flen++

;else ilen++

; p++;}

if(mask&

0x02

)buf++

;//去掉負號

for(i=

0;i)//得到整數部分資料

if(flen>

5)flen=5;

//最多取5位小數

*dx=flen;

//小數點位數

for(i=

0;i)//得到小數部分資料

res=ires*

nmea_pow(10

,flen)

+fres;

if(mask&

0x02

)res=

-res;

return res;

}//效果:字串"123.456"先轉為"123456",然後除以1000得到"123.456"。

4 十進位制轉字串

u16 dectostr (u8 *psrc, u16 srclen, u8 *pobj)

*(pobj + i *2)

='\0'

;return

(i *2)

;}//效果:十進位制陣列"13 14"轉為字串"1314"。

5 u8、u32轉換

字元『a』 , 乙個位元組8bit ,即u8十六進製制為0x41二進位制為"0100 0001"。

而對應的十進位制為65,4個位元組32bit,即u32十六進製制為0x41二進位制為"0000 0000 0000 0000 0000 0000 0100 0001"。

(1)將u32數轉換成u8陣列

注意:這裡是字元陣列,不是字串;字串是以空字元(\0

)結尾的char陣列。

void

u32tou8array

(uint8_t

*buf,

uint32_t u32value)

效果:整型 50 轉字元陣列 。

(2)u8陣列轉u32

void

u8arraytou32

(uint8_t

*buf,

uint32_t

*u32value)

效果:字元陣列 轉為整型 50。

6 大端小端

//stm32預設是小端模式,那麼該如何轉為大端?

//**實現:

//為大端:

ppack[0]

=(u8)

((len >>8)

&0xff);

ppack[1]

=(u8)

(len &

0xff);

//為小端:

ppack[0]

=(u8)

(len &

0xff);

ppack[1]

=(u8)

((len >>8)

&0xff);

//效果:len為資料型別為u16(short),比如0x11 0x22,轉為u8(usigned char)陣列。

//大端為:

ppack[

0] (0x11 )

ppack[

1] (0x22)

//小端為:

ppack[

0] (0x22)

ppack[

1] (0x11)

十六進製制轉字串

給大家看下資料哦 密密麻麻的恐怖如斯,然後放上我的 說下思路 利用xlrd 去訪問excel,首先是開啟檔案 獨取對應的表。我們所需要的資料在第三列,起始位置有效位置是第二行 list table.col colx 2,start rowx 1,end rowx none 拿到資料以後我們列印一下會...

十六進製制轉字串

兩個16進製制的字元轉成乙個位元組 int islowercase signed int character int uppercasetolower int character 這裡是固定傳入偶數個字元的16進製制字元 void strtohex uint8 t hexstr,uint8 t he...

C語言如何將字串轉十六進製制

通過查ascii表知道 a 對應的十六進製制是是0x61,a 對應的十六進製制是0x41,f 對應的十六進製制是是0x66,f 對應的十六進製制是0x46,0 對應的十六進製制是是0x30,9 對應的十六進製制是0x39,其實這裡的十六進製制就是由字元對應的ascii碼轉換得來的,下面主要講下如何將...