送分100分:简单的BCD码转换问题

aobamacn 2009-11-27 11:59:37
1、将1111(一万一千一百一十一)转换成2字节的BCD码后,这两个字节的实际值是什么。
2、请提供一下数值转BCD码和BCD码转数值的函数。

谢谢大家。

翠花,上100分!
...全文
154 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
king06 2009-11-27
  • 打赏
  • 举报
回复
不熟悉,帮顶~
zdingyun 2009-11-27
  • 打赏
  • 举报
回复
贝隆 2009-11-27
  • 打赏
  • 举报
回复
帮顶,学习
kwsxz 2009-11-27
  • 打赏
  • 举报
回复
帮顶是一种美德
zdingyun 2009-11-27
  • 打赏
  • 举报
回复
BCD码是一种8421编码,它将一个字节分两部分,高4位代表一个数字,低4位代表一个数字。
每2个BCD码构成一字节.LZ的1111(一千一百一十一)可直接看作为16进制的0X11和0X11.
aobamacn 2009-11-27
  • 打赏
  • 举报
回复
噢,是写错了,是一千一百一十一,谢谢。
hehaiyi2008 2009-11-27
  • 打赏
  • 举报
回复
帮顶
chinaboyzyq 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 aobamacn 的回复:]
1、将1111(一万一千一百一十一)转换成2字节的BCD码后,这两个字节的实际值是什么。
2、请提供一下数值转BCD码和BCD码转数值的函数。

谢谢大家。

翠花,上100分!
[/Quote]
(一万一千一百一十一)是不可以用两字节BCD码表示的。
1111转换成两字节bcd(8421)码后是(十六进制的)1111。
赵4老师 2009-11-27
  • 打赏
  • 举报
回复
1111(一万一千一百一十一)
应该改成
1111(一千一百一十一)
赵4老师 2009-11-27
  • 打赏
  • 举报
回复
&h11,&h11
也就是17,17
Tiger_Zhao 2009-11-27
  • 打赏
  • 举报
回复
Option Explicit

Sub Main()
Dim aBCD() As Byte
Dim lValue As Long
Dim i As Long

aBCD = EncodeBCD(1234)
For i = 0 To 1
Debug.Print Right("0" & Hex(aBCD(i)), 2);
Next
Debug.Print

lValue = DecodeBCD(aBCD)
Debug.Print lValue
End Sub

Function EncodeBCD(ByVal Value As Long) As Byte()
Dim aBCD() As Byte
ReDim aBCD(1)

aBCD(0) = ((Value \ 1000) Mod 10) * 16 + ((Value \ 100) Mod 10)
aBCD(1) = ((Value \ 10) Mod 10) * 16 + (Value Mod 10)

EncodeBCD = aBCD
End Function

Function DecodeBCD(aBCD() As Byte) As Long
DecodeBCD = (aBCD(0) \ 16) * 1000 + (aBCD(0) Mod 16) * 100 _
+ (aBCD(1) \ 16) * 10 + (aBCD(1) Mod 16)
End Function

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧