You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求实现字符串转BCD的函数,现有BCD转字符串VB函数如下

字符串转BCD(反向实现)

先拆解你给出的strBCDToStr函数逻辑:它把一个16位的Short类型BCD值,按每4位(1个十六进制位)拆解成单个数字字符,循环4次后拼接成4位数字字符串。比如输入Short值&H1234,会输出"1234"。

要实现反向功能(字符串转BCD),逻辑刚好相反:将4位数字字符串的每一位,依次转换为4位的BCD片段,拼接成一个16位的Short值。具体实现如下:

Public Function strToBCD(ByVal inputStr As String) As Short
    ' 输入验证:必须是4位纯数字字符串
    If inputStr.Length <> 4 OrElse Not inputStr.All(AddressOf Char.IsDigit) Then
        Throw New ArgumentException("输入必须是4位数字字符串")
    End If
    
    Dim bcdValue As Short = 0
    For Each c As Char In inputStr
        ' 将字符转为对应数字(ASCII码减48)
        Dim digit As Integer = Asc(c) - 48
        ' 左移4位腾出空间,再将当前数字存入低4位
        bcdValue = CShort((bcdValue << 4) Or digit)
    Next
    
    Return bcdValue
End Function

代码说明

  • 输入验证:提前过滤非4位、含非数字的非法输入,避免转换出错
  • 核心逻辑:
    1. 初始化BCD结果为0
    2. 遍历字符串每一位,先把当前BCD值左移4位(相当于乘以16,腾出4位空间)
    3. 将当前字符对应的数字(0-9)通过按位或操作,存入BCD值的低4位
    4. 循环完成后得到完整的16位BCD值

验证示例

输入字符串"1234",函数会返回Short类型的&H1234(十进制4660),将这个值传入你原有的strBCDToStr函数,会还原为"1234",确认转换逻辑正确。

内容的提问来源于stack exchange,提问作者No hay Problema

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:20:28