-
2021-05-23 00:51:14
本文收集整理关于十六进制数转换成ascii码的相关议题,使用内容导航快速到达。
内容导航:
Q1:一个十六进制数转换成ASCII码的单片机程序
HASC:MOVA,R0;从R0中取一个16进制(二进制)数(0-F)
ANLA,#0FH;屏蔽掉高4位
PUSHACC;4位二进制数入栈
CLRC;清进(借)位位
SUBBA,#0AH
POPACC
JCLOOP
ADDA,#07H
LOOP:ADDA,#30H
MOVR2,A
RET
实验结果:R0中的十六进制数(比如A),转换为ASCII码(41H)送入R2中。刚才回答了,没有了吗?
Q2:如何用汇编语言把十六进制数1A5F转换成ascii码并显示在屏幕上
刚好我写了一个,调试都通过可以执行的,。
.386、.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
.data
szCaption db convert num to srting,0
szResult db 6 dup(0)
.code
_Translate proc para1:DWORD,para2:DWORD;定义子函数,para1变量用来放传入的数组,para2用于放编程ASIC后的字符数组LOCAL _iNum;定义零时变量,用于放被除数
LOCAL _iTemp;定义零时变量,用于存放除数
LOCAL _szTemp[265]:BYTE
mov eax,para1;;获取参数para1的值eax寄存器
mov _iNum,eax;将eax中的值放入零时变量_iNum
mov _iTemp,10H
lea ebx,_szTemp
xor ecx,ecx
.while _iNum;当被除数不为0时,就一直循环
xor edx,edx
mov eax,_iNum;将被除数放入eax寄存器中
div _iTemp;寄存器eax中的值除以_iTemp,商放入eax中,余数放入dl中
mov _iNum,eax
.if dl>9H;当余数大于9时,就转化为相对应的英文字母的ASIC的值
add dl,37H
.else
add dl,30H
.endif
mov byte ptr [ebx],dl;把变化后的值放入ebx寄存器中
inc ebx
inc ecx
.endw
mov eax,para2;将参数para2的地址传给eax寄存器,再讲ecx中的值倒序存入eax寄存器中
mov byte ptr [eax+ecx],0
lea ebx,_szTemp
.repeat
mov dl,byte ptr [ebx]
mov byte ptr [eax+ecx-1],dl
inc ebx
.untilcxz ;一直循环,直到cx的值=0,每次循环后ecx的值-1、
ret
_Translate endp
start:
mov eax,1A5FH ;修改这里的数,就能把任意16进制的数转化为ASIC码了
invoke _Translate,eax,offset szResult
invoke MessageBox,NULL,offset szResult,offset szCaption,MB_OK
invoke ExitProcess,0
end start
Q3:51单片机 十六进制数与ASCII码间的转换求详解
这程序的功能就是把一字节十六进制数的低4位转换为一个ASCII码。例如0x0E转换为E、0x08转换为8。
我估计你就是对内码不太熟悉吧。
你翻一下ASCII码的内码表,再对照这程序看看,应该就能明白了。
很好懂的。
Q4:怎么用单片机编写一段程序将若干十六进制数转换为ASCII码?
不知你要的是C语言的还是汇编的,都给你吧
C语言的:
#include typedef unsigned char uchar;
#define NUMBER10、
ucharBufferIn[NUMBER]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef,0x1a,0x1b};//16进制数存放区
ucharBufferOut[2*NUMBER];//ASCII码存放区
//功能:将多字节16进制数转换为ASCII字符
//入口:x:待转换16进制数,x>=0且x<=F
//出口:返回转换完成后的ASCII码字符数据,返回0为失败
ucharGetASCII(uchar x)
{
if(x>0x0f)
{
return 0;
}if(x>9)
{
return (A+x-10);
}
return (0+x);
}
//主程序
voidmain()
{
uchar i;
for(i=0;i{
BufferOut[i*2] = GetASCII(BufferIn[i]/0x10);
BufferOut[i*2+1] = GetASCII(BufferIn[i]%0x10);
}
while(1);
}
汇编的:
;说明:LOOP1循环为预设10个16进制数内容的初始化程序,作为示例
ORG0000H
LJMPSTART
ORG0100H
START:MOVR2,#10;预置10个16进制数
MOVR0,#20H;16进制数存放起始地址
MOVA,#12H
LOOP1:MOV@R0,A
ADDA,#13H
INCR0
DJNZR2,LOOP1;循环10次送10个数
;以上至START为初始化内存,预送10个字节的数据
MOVR0,#20H;16进制数存放起始地址
MOVR1,#30H;ASCII数存放起始地址
MOVR2,#10;转换10个字节
LCALLHEXTOASC;调用转换子程序
JMP$
;=======================================================
;HEXTOASC:将多字节16进制数转换为ASCII字符子程序
;入口:(R0)=16进制数存放起始地址指针
;(R2)=字节数
;出口:(R1)=转换完成后的ASC字符存放起始地址指针
;算法说明:0~9:(ASCII码为30H~39H)+90H后调整后无变化,结果
;为9xH,再加40H为0DxH,调整操作+60H后正好为3xH;
;A~F:(ASCII为41H~46H),+90H后为9xH,调整操作+06H后
;为01H~06H,再加40H调整后不变,正好为41H~46H;
;=======================================================
HEXTOASC:
MOVA,@R0
SWAPA
ANLA,#0FH;处理高4位
ADDA,#90H
DAA
ADDCA,#40H
DAA
MOV@R1,A;保存高4位
INCR1、MOVA,@R0
ANLA,#0FH;处理低4位
ADDA,#90H
DAA
ADDCA,#40H
DAA
MOV@R1,A;保存低4位
INCR1;下一个16进制数
INCR0
DJNZR2,HEXTOASC
RET
END
更多相关内容 -
十六进制的转换为十进制两种常见方法
2020-10-09 22:09:40十六进制的转换为十进制两种常见方法 好久以前学的都忘了,正好复习一下 对于十六进制转十进制 第一种:快速法(自己挺喜欢第一种的快捷) 比如: 012A=0 X 163 + 1 X 162+ 2 X 161 + 10 X 160 = 298 说明:当中的... -
LeetCode 405. 数字转换为十六进制数
2020-12-21 08:20:01给定一个整数,编写一个算法将这个数转换为十六进制数。 对于负整数,我们通常使用 补码运算 方法。 注意: 十六进制中所有字母(a-f)都必须是小写。 十六进制字符串中不能包含多余的前导零。 如果要转化的数为0,那么... -
十进制数转换为十六进制-Java
2019-01-15 22:15:17// 十进制转化为十六进制,结果为1a。 Integer.toHexString(26); // 十六进制转化为十进制,结果26。 Integer.parseInt("1a",16); 本文则是自己写了一个程序用于十进制变为十六进制,简单易懂...不使用Java自带函数怎么将十进制数变为十六进制数?
Java中存在十六进制和十进制之间直接转换的方法
// 十进制转化为十六进制,结果为1a。 Integer.toHexString(26); // 十六进制转化为十进制,结果26。 Integer.parseInt("1a",16);
本文则是自己写了一个程序用于十进制变为十六进制,简单易懂,也可以根据本文章试着自己试着将十六进制变为十进制
import java.util.Scanner; public class firstcommit { /* * 四个二进制位是一个十六进制位,每四位取一次 * 对变量进行&位运算,获取四位就&四个1,就是&15 */ public static void main(String[] args) { int num=0; Scanner sc=new Scanner(System.in); System.out.println("please input a number:"); num=sc.nextInt(); char a[]=new char[8]; int len=a.length-1; for(int i=0;i<8;i++) {//内存中最大数位为32位,八个十六进制位,所以最多循环八次 int n=num&15; if(n>9) a[len]=(char)(n-10+'A');//最好不要使用a[i],数字是反的 else a[len]=(char)(n+'0'); len--; num=num>>>4; } System.out.print("the final result is: 0x"); for(int i=0;i<a.length;i++) { System.out.print(a[i]);//输出结果为0x形式 } } }
-
Java中十六进制与十进制相互转换
2020-03-17 19:58:35一:十进制转十六进制 public class 十进制转十六进制 { public static void main(String[] args) { ... //把十进制整数转换为十六进制字符串,字母为小写 String hexStr = Integer.toHexString(a); //把十六...一:十进制转十六进制
public class 十进制转十六进制 { public static void main(String[] args) { int a = new Scanner(System.in).nextInt(); //把十进制整数转换为十六进制字符串,字母为小写 String hexStr = Integer.toHexString(a); //把十六进制字符串中小写字母转换为大写 System.out.println(hexStr.toUpperCase()); } }
结果:
255 FF
二:十六进制转十进制
public class 十六进制转十进制 { public static void main(String[] args) { String s= new Scanner(System.in).nextLine(); //将十六进制字符串解析为int整型 System.out.println(Integer.parseInt(s, 16)); } }
结果:
FFF 4095
Integer类方法
- static int parseInt(String s)
将字符串参数作为有符号的十进制整数进行解析 - static int parseInt(String s,int radix)
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
返回十进制整数(radix代表要转换的字符串是几进制的数)
示例: parseInt("0", 10) 返回 0 parseInt("473", 10) 返回 473 parseInt("-0", 10) 返回 0 parseInt("-FF", 16) 返回 -255 parseInt("1100110", 2) 返回 102 parseInt("2147483647", 10) 返回 2147483647 parseInt("-2147483648", 10) 返回 -2147483648 parseInt("2147483648", 10) 抛出 NumberFormatException parseInt("99", 8) 抛出 NumberFormatException parseInt("Kona", 10) 抛出 NumberFormatException parseInt("Kona", 27) 返回 411787
- static int parseInt(String s)
-
Java十进制和十六进制相互转换(简单)
2021-03-03 14:21:12//十进制数字:16, 十六进制表示:2a Integer num = new Integer(26); //十进制转换十六进制字符串 ...// 十六进制字符串转换为十进制数字 System.out.println(Integer.valueOf(numHex, 16)); 运行结果 1a 26 ... -
二进制/十进制/十六进制 相互转换关系
2022-01-21 10:10:00十进制:数学里通常用十进制计算。...例如:十进制中的2转换成二进制为10,十进制中的3转换成二进制为11,十进制中的4转换成二进制为100,十进制中的5转换成二进制为101,十进制中的6转换成二进制为110,十进制中的7.. -
python - 将十六进制转换为二进制
2021-01-29 14:20:28python - 将十六进制转换为二进制我有ABC123EFFF。我想拥有001010101111000001001000111110111111111111(即二进制代表,例如42位数和前导零)。怎么样?18个解决方案92 votes为了解决左侧尾随零问题:my_hexdata = ... -
十六进制字符串转换成十进制非负整数
2021-01-26 23:16:35输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,输出该字符串并将其转换为十进制数后输出。 输入格式 输入在一行中给出一个不超过80个字符长度的、以#... -
十六进制转十进制简洁C++代码
2022-02-27 14:32:40输入一个十六进制数,输出相应的十进制数。 十六进制的基数是0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f。 输入格式 输入有若干行,每行表示一个十六进制的数。 输出格式 输出每个十六进制数对应的十进制数。 ... -
十六进制带小数转换成十进制
2017-12-11 21:59:00十六进制数和十进制数类似,以小数点为界,整数部分从低位到高位依次是0次方位、1次方位、.、n次方位;小数部分从高位到低位依次是-1次方位、-2次方位、.、-m次方位.都可用加权求和的方式表示.十六进制数转换成十进制... -
十六进制转换为十进制
2018-08-30 14:25:34int APICOM_htoi(char *src) { char *dst = src; char *calc = src; int total = 0; int length = 0; if(src ==PNULL) { return PNULL; } while(*dst++) { ... -
进制转换(二进制、八进制、十进制、十六进制)涵盖整数与小数部分,超详细
2020-08-05 22:48:22今天来总结一下各种进制转换问题,详细齐全易于理解,希望对你有帮助哦! 先从我们最熟悉的十进制入手吧,其他进制与十进制的转换方法都是一样的,保证能全部记住!...一、十进制转换成二进制、八进制、十六进制 -
C语言十六进制转换为八进制
2019-01-31 23:16:09接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 【注意】 输入的十六进制数不会有前导... -
7-40 十六进制字符串转换成十进制非负整数 (15 分)
2021-11-22 14:56:58输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,输出该字符串并将其转换为十进制数后输出。 输入格式: 输入在一行中给出一个不超过80个字符长度的、以... -
计算机基础知识--进制转换(二进制、十进制、十六进制、八进制)
2020-10-09 10:54:14这里的十进制数 29 转换为二进制数后为 11101。 十进制转八进制 使用十进制的数据不断除以8,直到商为0为止。从下往上取余数就是对应的八进制。 十进制转为八进制和十进制转二进制差不多,看图: 因此,十进制数45... -
十进制 二进制 八进制 十六进制 之间的相互转换
2019-09-26 17:35:23二进制 八进制 十六进制转换为十进制 1. 二进制转换为十进制 例如一个二进制的数1010101如何转换成十进制数呢? 把最后一位看做 2^0 依次将指数递增上去 再乘以每一位所对应的数字 最后相加就好了(以二进制的... -
十六进制转八进制,十六进制转十进制
2019-02-26 21:58:14接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 【注意】 输入的十六进制数不会有前导... -
【笔记】二进制八进制十进制十六进制互转详细教程和范例
2021-10-28 18:55:48二进制转换八进制十进制十六进制 例: 11010 二进制转换八进制 需要2进制数字为每3位分组的十进制数,不足3位的倍数的需前补0凑成3位的倍数位 11010 转换为 011010 取每3位分组的十进制结果并取从前往后排列得到八... -
C语言程序实现:十六进制转换为八进制(绝对用心仔细)
2019-09-07 11:53:46从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 分析: 将十六进制是转换为十进制 再将十进制转换为八... -
二进制、十进制、十六进制详细说明
2021-07-14 10:07:00我们在课本的学习中,几乎用到的都是数制,像二进制、八进制、十进制、十六进制都是数制。 举个例子二进制 10010 我们知道它表示的数值大小是 18。(十进制下) 码制:表示事物的规则 码制就是用数字来表示具体... -
二进制,十进制,十六进制互相转化
2018-10-08 14:34:27版权声明:本文为博主原创文章,未经博主允许不得转载。 ... 二进制转化为十进制:(1)从右向左数,确定所数的数字是第几位(编号为n),转... -
(突然发现可以直接转换。...)C语言 之 十六进制数与十进制数的相互转换。十六进制数的加减法
2020-02-23 22:13:52十六进制数转换成十进制数 题目:输入一个十六进制数,以十进制输出。。。 代码: #include<stdio.h> int main() { char a[10]; int b=0,len,i=0; gets(a); //输入十六进制数 len=strlen(a); if(a[0]==... -
7-25 十六进制字符串转换成十进制非负整数 (15分)
2019-12-27 17:27:58输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,输出该字符串并将其转换为十进制数后输出。 输入格式: 输入在一行中给出一个不超过80个字符长度的、以#... -
7-8 十六进制字符串转换成十进制非负整数 (15 分)
2022-01-02 20:11:00输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,输出该字符串并将其转换为十进制数后输出。 输入格式: 输入在一行中给出一个不超过80个字符长度的、以... -
C++中二进制、字符串、十六进制、十进制之间的转换
2020-05-18 17:29:374、十进制和十六进制相互转换 5、二进制和十六进制 1、十进制和二进制相互转换 (1)十进制转二进制 int a = 10; bitset<10> bit(a); cout << bit << endl; 输出:0000001010 (2)二进制转十进制... -
数字转换为十六进制数
2020-08-17 23:18:38“数字转换为十六进制数”1 给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。 注意: 十六进制中所有字母(a-f)都必须是小写。 十六进制字符串中不能包含多余的前导零... -
二进制、十进制、十六进制数值对照表
2019-10-30 08:07:15十进制 十六进制 二进制 Symbol 十进制 十六进制 二进制 Symbol 0 00 0000 0000 NUL 64 40 0100 0000 @ 1 01 0000 0001 SOH 65 41 0100 0001 A...