当前位置:首页 » 编程语言 » 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;
}