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
相关产品推荐
相关产品推荐

