基于C++语言编程,如何把int型的数值10,转换为16进制格式的0x10,而不是0x0a?
根据10进制转换为16进制的规则,编写C语言程序将10进制数转换为16进制数。
具体实现方法可参考如下程序:
#includevoid main(){
int i, x; // x表示欲转换的10进制数
int data[10], index=0; // data数组存放转换后的16进制数,index表示下标
scanf("%d", &x); // 接受欲转换的10进制数
for(i=0; i<10; i++) // 对数组data进行初始赋值操作
data[i] = 0; printf("%d对应的16进制为:", x); // 反复相除取余,并将余数存放在data数组中
while(x>0) {
data[index] = x%16; x = x/16; index++;
} // 逆序输出data数组中的元素,即为10进制数对应的16进制数 for(i=index-1; i>=0; i--) printf("%d", data[i]); printf("
");
}
方法一:#include#include 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');elsestr += ('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#include #include
#include #include using namespace std;int main()
{string decStr;cin >> decStr;int num = stoi(decStr);vectorv;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;elsehexStr += ('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 > strTemp;hexStr += strTemp;}elsehexStr += ('A' + temp - 10);}}cout << hexStr << endl;return 0;}
扩展资料:
还有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 #include 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;}
这个要求很少见的说,这样凡是带a-f的16进制数就无法传输了
不过可以实现
convert函数实现这样的功能,main为测试函数,可以不管
#include <stdio.h>
int convert(int a)
{
int i = 0, ret = 0;
int t;
while(a)
{
t = a%10;
ret |= t<<(i*4);
a/=10;
i ++;
if(i > 8) break;
}
return ret;
}
int main()
{
int in;
while(~scanf("%d", &in))
printf("0x%x
", convert(in));
}
#include <reg51.h> //将十进制显示在12864液晶上,参考“DM12864-A中文字库12864液 晶”
void lcdwcmd(...) //lcdwdat()和lcdwcmd()两个函数自己在网上找液晶相关程序
{...} //这里省略其他液晶相关程序,自己网上找
void lcdwdat(...)
{...}
int main()
{
int a; //假设a为通过相关传感器或其他手段得到的数字,并且已经有值了
int i = 0,g,s,b;
b=a/100 ; //百位位置上的数
s=a%100/10; //十位位置的数
g=a%100%10; //个位位置的数
lcdwcmd(0x80); //写命令函数,0x80是12864液晶第一行第一个显示位置
//0x90是第二行第一个
//0x88是第三行第一个
//0x98是第四行第一个
lcdwdat(0x30+b); //写数据函数
lcdwdat(0x30+s);
lcdwdat(0x30+g);
}
int a = 10;
int hex1 = a / 10;
int hex2 = a % 10;
int hexValue = hex1 * 16 + hex2;
int hexValue = test(a, 1);
int test(int value, int x)
{
if (0 == value)
return 0;
return (((value % 10) * x) + test(value / 10, x * 16));
}
/*******************************************************************
功 能:十六进制数转十进制形式的十六进制数
输 入:十六进制数(参数范围0到99(即0x00到0x63))
返 回:十进制形式的十六进制数
示 例:输入参数0x0A(即十进制10),返回0x10(即十进制16)
********************************************************************/
uchar HEX_To_DEC(uchar HEX)
{
uchar DEC_H, DEC_L; // 十进制的高低位
uchar DEC; // 保存转换为10进制的结果
if((HEX >= 0)&&(HEX <= 99))
{
DEC_H = HEX / 10; //取出高位
DEC_L = HEX % 10; //取出低位
DEC = (DEC_H<<4)|DEC_L;
}
return DEC;
}
c语言用什么编程软件
c语言编程软件包括:Code Blocks、Eclipse、CLion、Microsoft Visual C++ 、Microsoft Visual Studio、WaTCom C++、NetBeans、Atom、PlatformIO、Sublime Text等。Code Blocks是一个开放源码的全功能的跨平台C\/C++集成开发环境,由纯粹的C++语言开发完成,支持语法彩色醒目显示,支持代码完成、支持工程管理、项目...
学生C语言编程学习必备的一些网站
C语言网(www.dotcpp.com)不仅提供C语言,还包括C++、java、算法与数据结构等课程在内的各种入门教程、视频录像、编程经验、编译器教程及软件下载、题解博客,源码分享等优质资源,提倡边学边练边分享,同时提供对口的IT工作,是国内领先实用的综合性编程学习网站! 2、C语言中文网 C语言中文网是中国领先的C语言程序设计...
C语言是什么意思?
C语言的应用范围非常广泛。它被广泛应用于Unix、Linux、Windows等操作系统的开发,还被应用在嵌入式系统、网络编程、图形界面设计等领域。C语言具有简单且易于阅读的语法,使得初学者很容易理解。并且,由于C语言源代码可以在不同平台上进行编译,从而实现跨平台性。总之,C语言的历史和发展表明了它对计算机...
C语言编程实现从1到100的求 和
在C语言中可以通过定义一个累加器(一个变量)并结合for循环来实现计算1到100之和。具体的实现程序如下:double sum=0; \/\/ 定义累加器变量sum,并初始化为0 int i;for(i=1; i<=100; i++){ sum += i; \/\/ 等价于sum = sum + i; 即将累加的和保存在累加器sum中 } printf("%lf...
c语言要学多久
4、练习和实践:学习C语言编程的关键在于实践。通过编写简单的程序,解决一些小问题,并逐渐扩展到更复杂的项目,可以提高自己的编程能力。坚持练习并不断挑战自己将有助于加深对C语言的理解和应用。5、深入学习和扩展:一旦掌握了C语言的基本知识和编程技巧,可以进一步学习和探索更高级的主题,如函数、...
用C语言编程从键盘输入一个正整数,判断其个位数是否为5,若是5则输出...
include <stdio.h> int main(){ int five;printf("输入一个整数:");scanf("%d",&five);while(five>10){ five = five%10;} if(five == 5)printf("yes");else printf("no");return 0;}
c语言编程:给一个不多于五位的正整数,用if-else语句求出它是几位数...
可以参考下面的代码:include <stdio.h> void main(){ int num; printf("请输入一个不大于5位数的正整数:");scanf("%d",&num);if(num>99999||num<1)printf("您的输入有误!\\n");else { if(num<10)printf("您输入的是1位数!\\n");else if(num<100)printf("您输入的是2位数!\\n...
用C语言编程:给一个不多于5位的正整数,要求如下:
修改后的代码:include<stdio.h> int main(){ int a, b, c, d, e, f, w;printf("输入一个不多于五位的整数:");scanf("%d",&a);\/\/第一问,求出它是几位数 b = 10000 - a;c = 1000 - a;d = 100 - a;e = 10 - a;f = 0 - a;while (a < 0 || a > 99999)pr...
用C语言进行编程,输出26个字母和他们的ASCII码,每行输出两组数据_百度...
include <stdio.h> int main(){ char ch;int n = 1;for ( ch = 'A'; ch <= 'Z'; ch++ ){ printf( "%c:%d", ch, ch );if ( n % 2 == 0 )printf( "\\n" );else printf( "\\t" );n++;} return 0;} 执行结果:A:65 B:66 C:67 D:68 E:69 F:70 ...
c语言编程,输入100个数,在这100个数之内有若干个数相加正好等于375.显...
先排序,然后递归穷举,下面是简单的代码 int a[100];\/*100输入的数*\/ int b[100];\/*记录注重的数*\/ sort(a)dfs(int sum,int lab){ if(lab>=100)return;if(sum+a[lab]==375){ output();return;} else if(sum+a[lab]>375){ return ;} else dfs(sum+a[lab],lab+1);} ...
佘卷感冒: int型的数组添加一个数有如下方法: 1, 在数组定义时,直接把数值写入. int nData[5] = {123, 234, 325, 561, 475}; 2, 程序执行中,用下标给数组中赋值. nData[3] = 675; 注意数组下标从 0 起算,上面这个是给数组中的第 4 个数赋值. 3, 用数据指针给数组赋值. int nData[5]; int* point; …… point = nData; //取数组头指针. point += 3; //指针指向数组第 4 个位置. *point = 657; //向指针所指的位置赋值.
蛟河市18024229765: C语言将int型转化成string型 - ?
佘卷感冒: C语言 无 string型.C++ string 是类(class),也不是变量类型.C语言字符型用 char型. int型转化为char型 用 sprintf: 例如: int x=1234; char str[35]; sprintf("str,"%d",x);
蛟河市18024229765: 在C++中怎么样把一个int型转换为CString类型?? - ?
佘卷感冒: int a=………… CString str; str.Format("%d", a);
蛟河市18024229765: 在c++中怎样将 int型转换为string? - ?
佘卷感冒: char *itoa(int value, char *string, int radix) value 要转化的数值,radix 转换的进制,如10表示按十进制转换返回字符串指针
蛟河市18024229765: C++int型如何转换成一个byte - ?
佘卷感冒: int占一个机器字长.在32位系统中int占32位,也就是4个字节,而在老式的16位系统中,int占16位,即2个字节.而c++标准中只限制规定shortshort是固定的2字节,long是固定的4字节 int是不定的,可能是short(比如tc),可能是long(比如...
蛟河市18024229765: C++ 如何将字符串(由数字组成)转换为 int型数字,以用于计算?
佘卷感冒: #include <stdio.h> #include <iostream.h> #define MAX_LONG 0X7FFFFFFF int myatoi(char *s) { // 将数字串转换为整数值,不转换非数字字符 long sign = 1,num = 0;; char *p = s; if(*p == '-') { sign = -1; p++; } if(*p == '+') { sign = 1; p++; } while(*p) { if...
蛟河市18024229765: C++中如何把多个int型变量合并在一个string中? - ?
佘卷感冒: string Fuck(int year, int month, int day) { return (stringstream()<<year<<"/"<<month<<"/"<<day).str(); } 或者stringstream 或者boost::lexical_cast成string之后再连接成一个长的
蛟河市18024229765: C++中怎样把 int型转换成二进制 - ?
佘卷感冒: 你说的是转成二进制字符串吧?整数除二取余这种的,或者移位,c++还有一个类库bitset可以试一下
蛟河市18024229765: C++里如何将int型压入string s中??
佘卷感冒: std::stringstream ss; ss<<op[0]; for(int i = 0;i<4;i++) {ss<<_N[i]; } return ss.str();
蛟河市18024229765: 在c或c++中,怎么把int型变量转换成 string 或者 char*型 - ?
佘卷感冒: sprintf(buffer, "%d", int_value); // C或stringstream s(a_string);s << int_value; // C++