当前位置:首页 » 编程语言 » c语言单片机程序转HEX
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言单片机程序转HEX

发布时间: 2022-10-01 07:26:41

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;}

(1)c语言单片机程序转HEX扩展阅读:


还有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语言文件转化为hex文件

可以配置他是否显示头文件,工程目录树是怎么组织的等等信息
10 bak就是对工程文件的备份.LST 列表文件,被定位到单片机哪个地址里了,例如你有哪些代码段,显示程序汇编后的汇编代码等等,显示符号表.OBJ 这个是编译器编译后的最终文件:
1 test1 无后缀文件,没有调用哪个函数,里面都是连接器的连接信息,没啥说的

呀.hex 这个文件可以直接下载到单片机里,然后提取变成HEX
6 DBK PWI 是test1,共同说明这你工程里有哪些文件,不用说了吧
12 lnp算是连接日志,用来给连接器连接和定位,工程代码总大小,都是多大,就是给你一个后悔修改的机会
11 asm 就是汇编文件了,用来和KEIL联合仿真
4 test1我把我能认识的说说,在你工程选项里,不能打开
2 test1、数据段,他就是从无后缀文件test1里提取的,可以打开
5 test1,可以用文本编辑器打开看看,去掉了调试信息,可以打开
3 test1,比如覆盖分析,这个文件很重要.DSN,这个是另外一个软件PROTUES软件的工程文件,这个是最终生成的文件,告诉你连接器连接了哪些OBJ等,没啥说的,出了大问题必须打开它,文件有没有被编译过,混合编程时查看函数段名等,这就属于PROTUES软件了,内存使用总大小等
9 uvopt和uvproj都是keil工程文件,只要有这个文件KEIL就可以软件仿真.DSN的附带文件,可以打开,不在详述
7 plg keil 的编译日志文件,里面是电路图,哪个函数调用了哪个函数.M51文件,可以打开看看
8 test1,连接器对OBJ连接后就变成了无后缀文件,这个文件是某个C文件编译后的文件,我好像马马虎虎勉强都认识啦

说的不够详细
解决方案2:
全部翻译就是:

生成(或构建)目标 ‘目标1’
正在汇编main.asm...
正在连接...
程序大小:内部直接寻址data存储区使用了8字节,外部xdata存储区使用0字节,代码大小15字节
正在从“test”创建hex格式的文件...
工程“test” - 0 个错误,0个警告

51单片机RAM区有4种:data、bdata、idata和xdata
51单片机ROM区一种:code

ROM就是 read only memory ,只读存储器,用来存程序的,掉电不会丢失数据
RAM就是 random access memory 随机访问存储器,是内存,掉电后数据全部丢失

③ C语言格式怎么转换成hex格式

有两种方法:
1、用相应的IDE(例如:keil)创建一个工程,然后将该C语言文件中的代码复制到工程中的目录下。然后使用keil 对该工程进行编译。这样就可以得到hex文件。
2、使用相应的编译器,一步一步的编译。
不推荐第二种方法因为,单独使用编译器编译需要很多麻烦的步骤,还有可能会出错。直接使用IDE会更加方便省去很多麻烦的步骤。

④ 我想要将自己编写的C语言程序转换成能在KEIL中进行仿真的hex文件,怎样做啊,希望能给出具体的步骤

可以直接在keil中编译c 进行仿真。 双击错误会跳到错误那行, 很容易发现

⑤ 单片机c语言中,怎么快速把二进制数转成十六进制数

按8421码对应
例如1111
1010
0101
从低位开始每四位对应一次8421(1代表有,0代表无)
那么就是1111=15=F
1010=10=A
0101=5=5
所以1111
1010
0101=0xFA5
不是整四位的高位补0
11
0011
0111=0011
0011
0111=0x337

⑥ C语言格式怎么转换成hex格式

在KEIL软件上建立工程项目,编辑C语言,编译调试无错后,点击project下的optionsfortarget,在output标签下勾选输出HEX,确定后就在编译一下会自动生成HEX文件在相同目录里。