當前位置:首頁 » 編程語言 » c語言sscanf函數十六進制
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言sscanf函數十六進制

發布時間: 2023-05-31 14:47:08

c語言字元數組如何轉成16進制

#include<stdio.h>
#include<string.h>
#include<malloc.h>
intmain(void)
{
char*pKey="";
intn=strlen(pKey)/2,i;
char*Key=(char*)malloc(sizeof(char)*n);
for(i=0;i<n;++i)
{
sscanf(pKey+2*i,"%2X",Key+i);
}
for(i=0;i<n;++i)
{
printf("%#02hhX",Key[i]);
}
return0;
}

② c語言輸入一個字元串轉換為十六進制並輸出

#include<stdio.h>
#include<string.h>
intmain()
{
unsignedi,len;
intn=0;
charstr[99]="123342abcdAFB1H",str1[99],str2[99]="";
sscanf(str,"%[0-9^a-f^A-F]",str1);
len=strlen(str1);
while(strlen(str1)>1)
{
sscanf(str1,"%2s",str2);
if(strlen(str1)!=len)printf(",");
printf("0x%s",str2);
n++;
for(i=0;i<strlen(str1)-2;i++)
{
str1[i]=str1[i+2];
}
str1[strlen(str1)-2]='';
}
printf(" n=%d ",n);
return0;
}

③ c語言編程 把十進制轉換為十六進制

方法一:

#include<iostream>
#include <string>
using namespace std;


string DecIntToHexStr(long long num)
{ string str; long long Temp = num / 16; int left = num % 16; if (Temp > 0) str +=

DecIntToHexStr(Temp); if (left < 10) str += (left + '0'); else str += ('A' + left - 10); return str;}
string DecStrToHexStr(string str){ long long Dec = 0; for (int i = 0; i < str.size(); ++i) Dec =

Dec * 10 + str[i] - '0'; return DecIntToHexStr(Dec);}int main()
{ string DecStr; while (cin >> DecStr) { cout << "0x" + DecStrToHexStr(DecStr); } return 0;}

方法二:


#include<iostream>
#include <string>
#include<vector>


#include <sstream>
#include <math.h>
using namespace std;int main()


{ string decStr; cin >> decStr; int num = stoi(decStr); vector<int>v; while (num) { int bit = num % 2; v.push_back(bit); num = num / 2; }


reverse(v.begin(), v.end()); string hexStr; if (v.size() % 4 == 0) { for (int i = 0; i < v.size() / 4; ++i) { int temp = 0, k = 3; for (int j = i * 4; j < (i +

1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; } if (temp <= 9) hexStr += temp; else hexStr += ('A' + temp - 10); } }

else { int zeroNum = 4 - v.size() % 4; for (int i = 0; i < zeroNum; ++i) v.insert(v.begin(), 0); for (int i = 0; i < v.size() / 4; ++i) { int temp = 0, k = 3; for

(int j = i * 4; j < (i + 1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }
if (temp <= 9) { stringstream ss; string strTemp;

ss << temp; ss >> strTemp; hexStr += strTemp; } else hexStr += ('A' + temp - 10); } } cout << hexStr << endl; return 0;}

(3)c語言sscanf函數十六進制擴展閱讀:


還有3種方式可以實現,其中兩種是使用系統函數,另一種是直接自己編寫。

下面的代碼就是3種方式的實現,包括2位的整數和任意整數(2的31次方以內)都可以。可自己選擇需要的實現方式。

利用系統函數有

1. char * itoa ( int value, char * str, int base );value是要轉化的數字,str是轉化後的字元串存儲的位置,base是進制數(但是這個函數不是標准C函數,有些編譯器是不支持的!)。所以代碼可以為:

char buffer [33]; //用於存放轉換好的十六進制字元串,可根據需要定義長度 char * inttohex(int aa){ itoa (aa, buffer, 16); return (buffer);}

2. sprintf(str,"%x",value);str是轉化存儲的位置,%x表示十六進制格式,value是要轉化的數字。所以代碼可以為:

char buffer [33]; //用於存放轉換好的十六進制字元串,可根據需要定義長度 char * inttohex(int aa){ sprintf(buffer, "%x", aa); return (buffer);}

3. 自己編寫

如果參數只要兩位數的整數,那麼很簡單。

代碼如下:

#include <stdio.h>#include <stdlib.h> char buffer [33]; //用於存放轉換好的十六進制字元串,可根據需要定義長度 char * inttohex(int aa)

{ sprintf(buffer, "%x", aa); return (buffer);} int main ()

{ int num; char * hex_str; printf ("Enter a number: "); scanf ("%d",&num); hex_str = inttohex (num); printf ("Hexadecimal number: %sH ", hex_str); return 0;}

④ 給一個C語言字元串轉16進制數的函數

呵呵,你是初學的吧,函數猛好不能嵌套定義的,給你個完整的例子吧。
#include
#include
unsigned
long
f(char*
str)
{

unsigned
long
var=0;

unsigned
long
t;

int
len
=
strlen(str);

if
(var
>嘩知孝
8)
//最長8位

return
-1;

strupr(str);//統一大寫

for
(;
*str;
str++)

{

if
(*str>='A'
&&
*str
<='F')

t
=
*str-55;//a-f之間的ascii與對應數值相亂稿差55如'A'為65,65-55即為A

else

t
=
*str-48;

var<<=4;

var|=t;

}

return
var;
}
void
main()
{

printf("%x\n",
f("FE80"));
}

⑤ C語言如何把11位16進制字元串轉成16進制數

#include<stdio.h>

#include<stdlib.h>

voidmain()

{

char*p="0x1b";

char*str;

longi=strtol(p,&str,16);

printf("%d ",i);

}

//輸出值為27

參數base代表採用的進制方式,如base值為10則採用10進制,若base值為16則采攜橋用禪隱仿16進制等。當base值為0時則是採用10進製做轉換,但遇到如』0x』前置字元則會使用16進製做轉換、遇到』0』前置字元而不是』0x』的時候會使用8進製做轉換。

(5)c語言sscanf函數十六進制擴展閱讀

C語言十進制轉2~16進制

#include<stdio.h>

voidtrans(intdata,intbase)

{

intx[64],k,i=0;

while(data)

{

x[i]=data%base;

data/=base;

i++;

}

for(k=i-1;k>=0;k--)

if(x[k]<10)

printf("%d",x[k]);

elseif(x[k]<=16)

printf("%c",'A'+x[k]-10);

}

intmain(void)

{

intnum,base;

scanf("%d%d",&num,&base);

if(base<=0||base>16)

{

printf("dataerror "賀纖);

return;

}

printf("number=%dbase=%d ",num,base);

trans(num,base);

printf(" ");

return0;

}

⑥ C語言如何把11位16進制字元串轉成16進制數

這個就是一個16進制數轉10進制的程序
先以字元串方式逐字元讀入16進制數
然後對每個讀入的字元依次做判斷
t=s[i]-'0'
//臨時變數t為當前判斷的字元串的ascii碼值減去字元'0'的ascii碼值,這一步的作用是將字元型碧賣轉換為整型以供計算
if(t<=9)
k=k*16+s[i]-'0'
//如果t≤9,說明原字元為'0'~'9',轉換後直接得到對應數字0~9,因此直接將這個數字轉換為十悔芹逗進制即可:k=k*16+s[i]-'0'即將當前位轉換為十進制
else
k=k*16+s[i]-'a'+10
//如果t>9,說明原字元為'a'~'f',轉換後不能得到對應數字,必須通過s[i]-'a'+10把字元'a'~'f'轉換為數字10~15,再逐位首磨轉換為十進制。

⑦ C語言中怎麼輸出一個負16進制的數

負數用十六進製表示,通常用的是拍敏補碼的方式表示。
int a=-3;
在C語言中可以這么輸出:printf("%hhx\n", a);
十六進制(英文名稱:Hexadecimal),是計算機中數據的一種表示方法悶腔。同我們日常生活中的表示法不一樣。它由0-9,A-F組成,字母不區分大小寫。與10進制的對應關系是:0-9對應0-9;A-F對應10-15;N進制的數可以用0~(N-1)的數表示,超過9的用字母A-F。
正數的補是它本身;負數的補碼是它本身的值每位求反,最後再加一。
例如:求-3的十六螞賀衫進制
3的十六進制為0003,3求反之後是C,再加1,成D,所以-3的十六進制就是:FFFD

⑧ 如何給一個C語言字元串轉16進制數的函數

多麻煩啊!
看好了:
#include<stdio.h>
int a;
char *str="1Af";
int main()
{
sscanf(str,"%x",&a);//%x為讀入16進制數,大小寫均可。sscanf是從c字元串中讀入變數。
printf("%i",a);
return 0;
}