请教,BCD码与ASC码互相转换问题?

ripples 2006-09-13 09:22:01
接收到的外部数据为BCD码,需在设备上显示为ASC码

同样,发送时需将ASC码转换为BCD码发送出去

请教各位相关算法,谢谢
...全文
585 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ripples 2006-09-14
  • 打赏
  • 举报
回复
有人可以帮一下吗?谢了,位操作搞得有点头晕
ripples 2006-09-13
  • 打赏
  • 举报
回复
谢谢jixingzhong(瞌睡虫:选择了远方,只顾风雨兼程!)

这个程序我看过,网上其他的一些也和这个差不多

我想请教一下,如果ASC码为abcdef123456这样的字符串的话

那么转换为BCD码应该显示什么呢,是把ASC字符的十进制表示转换为二进制吗

比方说ASC码a的十进制是97,那么转换为BCD码是10010111
ripples 2006-09-13
  • 打赏
  • 举报
回复
楼上的不厚道,有数据收发肯定跟通信有关了

主要是位操作我也知道,哪能什么都不知道就上来瞎问啊

现在我已经写了一个程序,不过转换的结果觉得有问题才上来请教的
jixingzhong 2006-09-13
  • 打赏
  • 举报
回复
vb 能看懂吧?

翻译一下就是了 ~
jixingzhong 2006-09-13
  • 打赏
  • 举报
回复
'由BCD转ASCII码
Function BCDToAsc(BCD() As Byte) As Byte()
Dim i As Integer
Dim bTemp As Byte
Dim bAsc() As Byte
Dim intLen As Integer

intLen = UBound(BCD)
ReDim bAsc(intLen * 2 + 1) As Byte '重新定义数组上标

For i = 0 To intLen
bTemp = (BCD(i) / 16) And &HF
If bTemp > 9 Then
bAsc(i * 2) = bTemp + Asc("A") - 10
Else
bAsc(i * 2) = bTemp + Asc("0")
End If

bTemp = BCD(i) And &HF

If bTemp > 9 Then
bAsc(i * 2 + 1) = bTemp + Asc("A") - 10
Else
bAsc(i * 2 + 1) = bTemp + Asc("0")
End If
Next

BCDToAsc = bAsc
End Function
narto 2006-09-13
  • 打赏
  • 举报
回复
算法是不会告诉你地~
我想你现在是在培训机构学吧,应该是个电信业务吧
呵呵~如果说对你也别奇怪

我只能告诉你,BCD是个压缩码,也就是说8位全是信息
而ASC却是前四位为0000,后面数据才有用,呵呵~~下面嘛~~
字符操作咯~

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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