十六进制转化 bcd码

十六进制转化 bcd码,第1张

void HextoBCD(u8 *pBuff,u8 len) //十六进制转为BCD码

{

u8 i,temp

for(i=0i<leni++)

{

temp=pBuff[i]/10

time[i]=pBuff[i]%10+temp*16

}

}

bcd码就是用二带袭冲进制数来表示常用的十蠢歼进制数。就是用四个位的二进制来表示一个二进制数。一个字节一共有八个位,它就可以表示两个bcd码。比如,0FH等于二禅租进制物15,用一个字节低四位来表示5,高四位来表示1合起来就是15H,不用转换两次的。

扩展资料

例如:

63÷10=6……3

即商是6,余数是

如果将商乘以16再加上余数,就是:6×16+3=99,其16进制数就是63H,即是十进制数63(16进制为3FH)的BCD码为63H。

如果在单片机中,程序这么写:char HEX,BCD;BCD=(HEX/10*16)+(HEX%10)

其中HEX存储十六进制数,BCD中存储的就是其BCD码。

参考资料来源:百度百科-BCD码

1、首先左移要转换的二进制码1位;  左移之后,BCD码分别置于百位、十桐春位念迅、个位;  如果移位后所在的BCD码列大于或等于5,则对该值加3;继续左移的过程直至全部移位完成,并检查每一列对应的bcd码是否

2、接着看信号列表。

3、然后二进制代码设计。

4、十进制代码。

5、十六进制,最后就完成了。

注意事项:

BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系仔轮此统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。

四字节16进制数可转换为四个二进制字节(Bytes),从而使用Api函数来处理成单精度浮点数。

以下用VB代码处理。

VB有专门的API函数CopyMemory能处理2-10进制浮点数转换滚穗和10-2进制浮点数转换。

下列代码演示了10进制Single(单精度浮点型转为16进制字符显示的浮点数和其相反运算:

Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub BinToSin_Click()

Dim sinStr As String

Dim sinSj As Single

Dim Buffer(3) As Byte

Dim i As Integer

sinStr = Text2

For i = 1 To Len(Text2) Step 2

Buffer((7 - i) / 2) = Val("&H" &Mid(sinStr, i, 2))

Next

CopyMemory ByVal VarPtr(sinSj), ByVal VarPtr(Buffer(0)), 4

Text3 = sinSj

End Sub

Private Sub SinToBin_Click()

Dim i As Integer

Dim hexData As String

Dim a As Single

Dim Buffer(3) As Byte

a = Val(Text1)

CopyMemory Buffer(0), a, 4

For i = 0 To 3

If Len(Hex(Buffer(i))) = 1 Then

hexData = "0" &Hex(Buffer(i)) + hexData

Else

hexData = Hex(Buffer(i)) + hexData

End If

Next

Text2 = hexData

End Sub

需要注意的事项是这四字简卖节的高低字节排序,不能搞错。

VB的Single 数据类型

Single(单精度浮点型)变量存储为 IEEE 32 位(4 个字节)浮点数值的形式,它的范围在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38。Single 的类型声明字符为感叹号 (!)。

在内存以32位二进制形式存在:

XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX

第1位为符号位

第2-9位为阶码位

第10-32位为2进制小数尾值

即F2 ^ n * 1. XXXXXXX XXXXXXXX XXXXXXXX

其中

F为正号大咐卜或负号(首为为0正数,首位为1负数

n为2-9位组成的BYTE数据值

XXXXXXX XXXXXXXX XXXXXXXX为尾数


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12410948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存