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

VB.NET十六进制值加法异常求助:BB+10未得到预期结果CB

问题:十六进制值加法结果不符合预期

需求与问题描述

需要实现的功能:从.txt文件读取十六进制字符串(如"DD")存入字符串变量,转换为Byte类型后执行十六进制加法(例如 BB + 10 = CB)。

测试转换代码(可正常将字符串"BB"转为Byte):

Public reqw As String = "BB" 'normally comes from the txt. file
Public btansw as byte
Public finansw as string 

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim MyByte As Byte
    If Byte.TryParse(reqw, System.Globalization.NumberStyles.AllowHexSpecifier, Nothing, MyByte) Then
        btansw = MyByte 
    Else
        RichTextBox3.Text &= "Err2"
    End If 
End Sub

问题代码执行后输出C5,而非预期的CB:

finansw = Microsoft.VisualBasic.Conversion.Hex(btansw+ 10) 
RichTextBox3.Text &= finansw

错误原因

核心问题是加法操作使用了十进制的10,而非你预期的十六进制10:

  • 十六进制"BB"转换为Byte后对应的十进制值是187
  • 代码中btansw + 10是187加上十进制10,结果为197,转换为十六进制就是C5
  • 你预期的是十六进制BB加十六进制10(对应十进制16),187+16=203,转换为十六进制才是CB

解决方案

将加法中的数值改为十六进制表示(VB中用&H前缀标识十六进制数),修改后的代码如下:

finansw = Microsoft.VisualBasic.Conversion.Hex(btansw + &H10) 
RichTextBox3.Text &= finansw

如果需要动态处理从文本读取的十六进制加数,可以先将加数字符串转为数值再执行加法:

Dim addHexStr As String = "10" ' 可从文件读取该值
Dim addValue As Byte
If Byte.TryParse(addHexStr, System.Globalization.NumberStyles.AllowHexSpecifier, Nothing, addValue) Then
    finansw = Microsoft.VisualBasic.Conversion.Hex(btansw + addValue)
    RichTextBox3.Text &= finansw
Else
    RichTextBox3.Text &= "无效的十六进制加数"
End If

内容的提问来源于stack exchange,提问作者Arun Pa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:36:33