溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

詳解C++中十六進(jìn)制字符串轉(zhuǎn)數(shù)字(數(shù)值)

發(fā)布時(shí)間:2020-09-05 15:47:32 來(lái)源:腳本之家 閱讀:292 作者:lqh 欄目:編程語(yǔ)言

詳解C++中十六進(jìn)制字符串轉(zhuǎn)數(shù)字(數(shù)值)

主要有兩個(gè)方法,其實(shí)都是對(duì)現(xiàn)有函數(shù)的使用: 

方法1: sscanf()  

函數(shù)名: sscanf
功  能: 從字符串格式化輸入
用  法: int sscanf(char *string, char *format[,argument,...]); 

以上的 format 為 %x 就是將字符串格式化為 16 進(jìn)制數(shù) 

例子: 

#include <stdio.h>  
void main()  
{  
  char* p = "0x1a";   
  int nValude = 0;     
  sscanf(p, "%x", &nValude);   
  printf("%d\r\n", nValude); 
} 

輸出:  

  26

 方法2: strtol() 

函數(shù)名: strtol
功  能: 將字符串轉(zhuǎn)換為長(zhǎng)整數(shù)
用  法: long strtol(char *str, char **endptr, int base); 

上面的base就是我們要轉(zhuǎn)換為幾進(jìn)制數(shù)

例子: 

#include <stdio.h>  
#include <stdlib.h>  
void main()  
{  
  char* p = "0x1b";   
  char* str;   
  long i = strtol(p, &str, 16);
  printf("%d\r\n", i);
 }  
 

輸出:

  27  

其實(shí)還有一種方法,就是用一個(gè)初始化為0~9~a~f的字符串?dāng)?shù)組,也就是一個(gè)十六進(jìn)制對(duì)應(yīng)表,用這個(gè)對(duì)應(yīng)表即可算出一個(gè)十六進(jìn)制字符串的數(shù)值,但這種發(fā)發(fā)太麻煩了,不推薦使用。

如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI