新聞中心
c語言輸入一個(gè)字符串轉(zhuǎn)換為十六進(jìn)制并輸出
#include?stdio.h
創(chuàng)新互聯(lián)是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),外鏈,1元廣告為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
int?IsHexChar(char?ch)
{
if((ch='0'??ch='9')?||?(ch='a'??ch='f')?||(ch='A'??ch='F'))
return?1;
else
return?0;
}
int?main()
{
char?str[1000]?=?"123342abcdAFB1H";
int?cnt?=?0;
int?i;
printf("input?str:\n");
//gets(str);
i?=?0;
while(str[i]str[i+1])
{
if(IsHexChar(str[i])??IsHexChar(str[i+1]))
{
cnt++;
printf(cnt==1?"0x%c%c":",?0x%c%c",?str[i],?str[i+1]);
i++;
i++;
}
else
break;
}
printf("\ncnt?=?%d\n",?cnt);
return?0;
}
hex_int在c語言有什么功能
c語言有int轉(zhuǎn)hex的庫函數(shù),數(shù)據(jù)類型轉(zhuǎn)換與進(jìn)制轉(zhuǎn)換(hex轉(zhuǎn)str,str轉(zhuǎn)hex/ASCII,str轉(zhuǎn)float/int,float/int轉(zhuǎn)str,進(jìn)制轉(zhuǎn)換等)——C語言篇... 轉(zhuǎn)載
2021-05-19 01:37:09
weixin_39878989
碼齡5年
關(guān)注
理清楚數(shù)據(jù)類型轉(zhuǎn)換,還是要回歸ASCII碼、
引用一下的ASCII表方便對比學(xué)習(xí)。在單片機(jī)中其實(shí)是自動識別十進(jìn)制與十六進(jìn)制的,但是有時(shí)候需要對數(shù)據(jù)轉(zhuǎn)換獲取想要的進(jìn)制數(shù)。下面介紹幾種數(shù)據(jù)類型的轉(zhuǎn)換,此外方法很多,只簡單介紹本人愚見。
97076b76df964194b190af80b79937b9.jpg
一、字符串轉(zhuǎn)ASCII
字符串其實(shí)就是上述ASCII表中的圖形欄內(nèi)容,轉(zhuǎn)換成hex,即變成對應(yīng)的十六進(jìn)制數(shù)。通常以0123456789ABCDEF,進(jìn)行轉(zhuǎn)換。找規(guī)律:字符 '0' 對應(yīng)0x30 字符 '1' 對應(yīng)0x31 字符‘A’ 對應(yīng)0x41 字符 ‘a(chǎn)’對應(yīng) 0x61 等這些都是簡單,早就知道的。換成C語言則可以這樣寫:
‘0~9‘ + 0x30
‘A~F’ - 'A'+10
'a~f' - 'a'+10
void str_to_acsll(uint8_t *s_inchar, uint8_t s_len, uint8_t *a_outtxt)
{
uint8_t size1=0,i=0;
for( size1=0;size1{
if( s_inchar[size1]='0' s_inchar[size1] = '9')
{
a_outtxt[size1] = s_inchar[size1] - 0x30;
}
else if( s_inchar[size1]='A' s_inchar[size1] = 'F')
{
a_outtxt[size1] = s_inchar[size1] - 'A'+10;
}
else if( s_inchar[size1]='a' s_inchar[size1] = 'f')
{
a_outtxt[size1] = s_inchar[size1] - 'a'+10;
}
}
for( size1=0,i=0;size1=s_len; size1++,i++)
{
a_outtxt[i]=(a_outtxt[size1]4)|a_outtxt[++size1];
}
a_outtxt[i] = '\0';
}
二、字符串轉(zhuǎn)hex
這個(gè)是用于把字符串占兩個(gè)字節(jié)的,合成為一個(gè)hex使用。比如:“FF” - 0xff 字符串占用的是兩個(gè)字節(jié)的數(shù)其實(shí)是一個(gè)hex的,那么就要位移合成。
uint16_t stringtohex(uint8_t *buf, uint8_t * format, uint16_t us_length)
{
uint8_t tempcode;
uint16_t uslength = us_length * 2,us_count = 0,us_data;
for(us_data = 0;us_count uslength; us_count += 2,us_data++)
{
tempcode = format[us_data] 4;
if(tempcode = 9)
{
buf[us_count] = tempcode + '0';
}
else
{
buf[us_count] = tempcode - 10 + 'A';
}
tempcode = format[us_data] 0X0F;
if(tempcode = 9)
{
buf[us_count+1] = tempcode + '0';
}
else
{
buf[us_count+1] = tempcode - 0X0A + 'A';
}
}
buf[uslength] = '\0';
return uslength;
}
三、float 轉(zhuǎn)hex
union valReg
{
char onenet_data[4];
float onenet_float;
};
union valReg onenet_val;
///float數(shù)據(jù)大小端的問題,低字節(jié)在后,高字節(jié)在前
int test()
{
float test_f=3.14;
uint8_t test_i8[4];
onenet_val.onenet_float=test_f;
test_i8[....]=onenet_val.onenet_data[...];即轉(zhuǎn)換完成
}
4. C標(biāo)準(zhǔn)庫的使用
sprintf((char *)srtbuf,"%d %f %s ", i8,float,buf );
相關(guān)資源:VC進(jìn)制轉(zhuǎn)換:10進(jìn)制整型轉(zhuǎn)2、8、16進(jìn)制_c++int轉(zhuǎn)16進(jìn)制-C++代
如何用C語言實(shí)現(xiàn)將一段字符串以指定格式(hex等)寫入到文件中,這個(gè)有什么函數(shù)可以實(shí)現(xiàn)?
可以看一下C的標(biāo)準(zhǔn)庫函數(shù)fprintf(char* fmt, ...),應(yīng)該和你說的函數(shù)差不多。
C語言:怎么將十六進(jìn)制字符串轉(zhuǎn)換成二進(jìn)制字符串,誰幫我寫個(gè)函數(shù)
十六進(jìn)制轉(zhuǎn)成十進(jìn)制的函數(shù):
//返回16進(jìn)制字符串s對應(yīng)的整數(shù)值,遇到任何一個(gè)非法字符都返回-1。
int HexToDec(char *s)
{
char *p = s;
//空串返回0。
if(*p == '\0')
return 0;
//忽略開頭的'0'字符
while(*p == '0')
p++;
int dec = 0;
char c;
//循環(huán)直到字符串結(jié)束。
while(c = *p++)
{
//dec乘16
dec = 4;
//數(shù)字字符。
if(c = '0' c = '9')
{
dec += c - '0';
continue;
}
//小寫abcdef。
if(c = 'a' c = 'f')
{
dec += c - 'a' + 10;
continue;
}
//大寫ABCDEF。
if(c = 'A' c = 'F')
{
dec += c - 'A' + 10;
continue;
}
//沒有從任何一個(gè)if語句中結(jié)束,說明遇到了非法字符。
return -1;
}
//正常結(jié)束循環(huán),返回10進(jìn)制整數(shù)值。
return dec;
}
十進(jìn)制轉(zhuǎn)成二進(jìn)制的函數(shù):
/*遞歸法求二進(jìn)制數(shù)*/
#includestdio.h
void printb(int x,int n);
void main()
{
int x;
printf("input number:");
scanf("%d",x);
printf("number of decimal form: %d\n",x);
printb(x,sizeof(int)*8);
putchar('\n');
}
void printb(int x,int n)
{
if(n0)
{
putchar('0'+( (unsigned)(x (1(n-1) ) )(n-1)));
printb(x,n-1);
}
}
C語言格式怎么轉(zhuǎn)換成hex格式?
在KEIL軟件上建立工程項(xiàng)目,編輯C語言,編譯調(diào)試無錯(cuò)后,點(diǎn)擊project下的options?for?target,在output標(biāo)簽下勾選輸出HEX,確定后就在編譯一下會自動生成HEX文件在相同目錄里。
網(wǎng)站名稱:c語言字符串變hex函數(shù) 怎樣將c語言轉(zhuǎn)化為hex
標(biāo)題鏈接:http://www.ef60e0e.cn/article/dodhsdh.html