C语言如何把11位16进制字符串转成16进制数
主要有两个方法,其实都是对现有函数的使用:
1、方法1: sscanf()
函数名: sscanf
功 能: 从字符串格式化输入
用 法: int sscanf(char *string, char *format[,argument,...]);
以上的 format 为 %x 就是将字符串格式化为 16 进制数
例子:
#include <stdio.h>
void main()
{
char* p = "0x1a";
int nValude = 0;
sscanf(p, "%x", &nValude);
printf("%d
", nValude);
}
输出:
26
2、方法2: strtol()
函数名: strtol
功 能: 将字符串转换为长整数
用 法: long strtol(char *str, char **endptr, int base);
上面的base就是我们要转换为几进制数
例子:
#include <stdio.h>
#include <stdlib.h>
void main()
{
char* p = "0x1b";
char* str;
long i = strtol(p, &str, 16);
printf("%d
", i);
}
输出:
27
绛旓細涓昏鏈変袱涓柟娉曪紝鍏跺疄閮芥槸瀵圭幇鏈夊嚱鏁扮殑浣跨敤锛銆1銆佹柟娉1: sscanf()鍑芥暟鍚: sscanf鍔 鑳: 浠庡瓧绗︿覆鏍煎紡鍖栬緭鍏ョ敤 娉: int sscanf(char *string, char *format[,argument,...]);浠ヤ笂鐨 format 涓 %x 灏辨槸灏嗗瓧绗︿覆鏍煎紡鍖栦负 16 杩涘埗鏁颁緥瀛愶細include <stdio.h>void main(){char* p = "0x1a...
绛旓細voidmain(){ char*p="0x1b";char*str;longi=strtol(p,&str,16);printf("%d\r\n",i);} //杈撳嚭鍊间负27 鍙傛暟base浠h〃閲囩敤鐨勮繘鍒舵柟寮忥紝濡俠ase鍊间负10鍒欓噰鐢10杩涘埗锛岃嫢base鍊间负16鍒欓噰鐢16杩涘埗绛夈傚綋base鍊间负0鏃跺垯鏄噰鐢10杩涘埗鍋氳浆鎹紝浣嗛亣鍒板鈥0x鈥欏墠缃瀛楃鍒欎細浣跨敤16杩涘埗鍋氳浆鎹侀亣鍒扳0鈥...
绛旓細1銆C/C++瑙勫畾,16杩涘埗鏁板繀椤讳互 0x寮澶淬傛瘮濡 0x1琛ㄧず涓涓16杩涘埗鏁般傝1鍒欒〃绀轰竴涓崄杩涘埗銆傚彟澶栧锛0xff,0xFF,0X102A,绛夌瓑.鍏朵腑鐨剎涓嶇敤鍖哄垎澶у皬鍐(娉ㄦ剰锛0x涓殑0鏄暟瀛0,鑰屼笉鏄瓧姣峅)銆傛澶栵紝C/C++涓紝10杩涘埗鏁版湁姝h礋涔嬪垎銆傛瘮濡12琛ㄧず姝12锛岃-12琛ㄧず璐12銆備絾8杩涘埗鍜16杩涘埗鍙兘琛ㄨ揪鏃犵鍙...
绛旓細if(t<=9) k=k*16+s[i]-'0' //濡傛灉t鈮9锛岃鏄庡師瀛楃涓'0'~'9'锛岃浆鎹㈠悗鐩存帴寰楀埌瀵瑰簲鏁板瓧0~9锛鍥犳鐩存帴灏嗚繖涓暟瀛楄浆鎹负鍗佽繘鍒跺嵆鍙锛歬=k*16+s[i]-'0'鍗冲皢褰撳墠浣嶈浆鎹负鍗佽繘鍒 else k=k*16+s[i]-'A'+10 //濡傛灉t>9锛岃鏄庡師瀛楃涓'A'~'F'锛岃浆鎹㈠悗涓嶈兘寰楀埌瀵瑰簲鏁板瓧锛屽繀椤婚氳繃...
绛旓細濡傛灉鏄鎶鍗佸叚杩涘埗鐨瀛楃涓锛岃浆鎹负鏁板煎舰寮忥紝瀹為檯涓婃槸杞崲涓哄崄杩涘埗鍊硷紙璁$畻鏈轰互浜岃繘鍒跺瓨鍌紝鍗佸叚杩涘埗褰㈠紡鏄▼搴忓憳涓虹畝渚胯屼骇鐢熺殑锛屽畠鏄簩杩涘埗琛ㄧず鐨勫彟涓绉嶅舰寮忥級锛屽彲浠ヤ互涓嬮潰鐨勪唬鐮佸疄鐜帮細int str2int(char s[]){int i,f;for(i=f=0;s[i];i++)if(s[i]>='0'&&s[i]<='9')f=f*16+...
绛旓細瑕佽緭鍑哄埌鏂囦欢锛屽彲浠ュ湪printf涔嬪墠鍔犱竴鍙 freopen("鏂囦欢鍚", "w", stdout);涔嬪悗鐨刾rintf璇彞杈撳嚭鐨勫唴瀹归兘琚噸瀹氬悜鍒伴夋嫨鐨勬枃浠堕噷 浠16杩涘埗杈撳嚭鐢%u灏卞ソ printf("%u\n",d);
绛旓細"%x"鏄灏嗗瓧绗︿覆A23CD浠鍗佸叚杩涘埗褰㈠紡杈撳叆a涓,濡傛灉灏"%x"鎹㈡垚涓"%d"鐨勮瘽,灏辨槸灏嗗瓧绗︿覆A23CD浠ュ崄杩涘埗褰㈠紡杈撳叆a涓,杩欐樉鐒舵槸閿欒鐨,鍥犱负灏咥23CD杞崲涓哄崄杩涘埗鐨勬椂鍊,鏃犳硶瑙f瀽A,CD绛夊瓧绗,鎵浠ュ緱鍑虹殑缁撴灉灏辨槸閿欒鐨勩 宸茶禐杩 宸茶俯杩< 浣犲杩欎釜鍥炵瓟鐨勮瘎浠锋槸? 璇勮 鏀惰捣 涓...
绛旓細16杩涘埗浠0x寮澶达紝鍚庨潰璺熸暟瀛0~9鎴栧瓧姣岮~F锛堝皬鍐欎篃鍙互锛夛紝濡傦細0x2D锛16杩涘埗鏁2D锛1銆鍗佸叚杩涘埗锛堣嫳鏂囧悕绉帮細Hexadecimal锛夛紝鏄绠楁満涓暟鎹殑涓绉嶈〃绀烘柟娉曘傚悓鎴戜滑鏃ュ父鐢熸椿涓殑琛ㄧず娉曚笉涓鏍枫傚畠鐢0-9锛孉-F缁勬垚锛屽瓧姣嶄笉鍖哄垎澶у皬鍐欍2銆佸崄鍏繘鍒朵笌10杩涘埗鐨勫搴斿叧绯绘槸锛0-9瀵瑰簲0-9锛汚-F瀵瑰簲10-15...
绛旓細include <stdio.h>int main(){int num = 0x12a;// 濡傛灉闇瑕佽緭鍏ヤ竴涓崄鍏繘鍒鏁扮殑璇濓紝鍙互鎶婁笅闈㈣繖琛岀殑娉ㄩ噴绗﹀彿鍘绘帀//scanf("%x", &num);printf("%d\n", num);}// 杩欐牱灏卞ソ浜嗭紝鍒╃敤绯荤粺鑷甫鐨勬牸寮忔帶鍒剁灏辫兘瀹屾垚浜// %x 鏄崄鍏繘鍒 锛堟敞鎰忥紝澶у啓涓庡皬鍐欏湪杈撳嚭鐨勬椂鍊欏搴斿崄鍏繘鍒剁殑澶у啓涓...
绛旓細void){char ch[10]="";int num=0;scanf("%s",ch);// 鍗佽繘鍒;鍏繘鍒朵互0寮濮;鍗佸叚杩涘埗浠0x鎴0X寮濮媔f(ch[0]=='0'&&(ch[1]=='x'||ch[1]=='X'))num=hexadecimal(ch+2);else if(ch[0]=='0')num=octal(ch+1);else num=decimal(ch);printf("this number:%d\n",num)...