VB.NET 'Char' 值不能转换为 'Integer'
Posted
技术标签:
【中文标题】VB.NET \'Char\' 值不能转换为 \'Integer\'【英文标题】:VB.NET 'Char' values cannot be converted to 'Integer'VB.NET 'Char' 值不能转换为 'Integer' 【发布时间】:2016-04-05 09:42:40 【问题描述】:我已将 C# 代码转换为 VB.NET 并出现以下错误。有没有办法让它工作?
第一个错误
VB.NET 'Char' 值不能转换为 'Integer'。采用 'Microsoft.VisualBasic.AscW' 将字符解释为 Unicode value 或 'Microsoft.VisualBasic.Val' 将其解释为数字。
charValue = text(System.Math.Max(System.Threading.Interlocked.Increment(charIndex), charIndex - 1))
完整的功能代码
Public Shared Function embedText(text As String, bmp As Bitmap) As Bitmap
Dim charValue As Integer = 0
charValue = text(System.Math.Max(System.Threading.Interlocked.Increment(charIndex), charIndex - 1))
Select Case pixelElementIndex Mod 3
Case 0
If True Then
If state__1 = State.Hiding Then
' the rightmost bit in the character will be (charValue % 2)
' to put this value instead of the LSB of the pixel element
' just add it to it
' recall that the LSB of the pixel element had been cleared
' before this operation
R += charValue Mod 2
' removes the added rightmost bit of the character
' such that next time we can reach the next one
charValue /= 2
End If
End If
Exit Select
Case 1
If True Then
If state__1 = State.Hiding Then
G += charValue Mod 2
charValue /= 2
End If
End If
Exit Select
Case 2
If True Then
If state__1 = State.Hiding Then
B += charValue Mod 2
charValue /= 2
End If
bmp.SetPixel(j, i, Color.FromArgb(R, G, B))
End If
Exit Select
End Select
pixelElementIndex += 1
If state__1 = State.Filling_With_Zeros Then
' increment the value of zeros until it is 8
zeros += 1
End If
Next
Next
Next
Return bmp
End Function
' convert the character value from int to char
Dim c As Char = CChar(charValue)
第二个错误
预期类型
Application.Run(New Project1())
帮助我解决这些错误。
【问题讨论】:
好吧,错误消息为您提供了两种可能的选择。在这种情况下,听起来您可能想要AscW
。
@JonSkeet 你能帮我改一下代码吗?
并非如此,因为您只显示了一行代码而没有任何变量声明等。请显示minimal reproducible example 并包含您尝试修复的内容问题,给出错误消息。
试试,vbforums.com/…
不,那仍然是 59 行代码。我相信你可以在一个完整的程序(不仅仅是一个函数)中用显着更少的代码来演示这个问题......如果那样的话,大约只有 15 行。学习缩小问题的范围是软件工程中的一项重要技能。
【参考方案1】:
试试第一条错误信息是什么意思:
创建一个整数类型说
Dim intValue As Integer
然后将你的 char 值传递给它
intValue = Asc(charValue)
或
intValue = AscW(charValue)
对于第二个选项,您可能想尝试一下
intValue = Val(charValue)
【讨论】:
按照 Jon Skeet 的说法,所以也许考虑使用 intValue = AscW(charValue) 返回arrayoutofrange异常:(以上是关于VB.NET 'Char' 值不能转换为 'Integer'的主要内容,如果未能解决你的问题,请参考以下文章
为啥 atoi 函数不能将 const char * 转换为 int?
使用 vb.net 将字符串时间/日期值转换为 dateTime 值