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'的主要内容,如果未能解决你的问题,请参考以下文章

怎么将bool类型的值转换为char类型的值

为啥 atoi 函数不能将 const char * 转换为 int?

使用 vb.net 将字符串时间/日期值转换为 dateTime 值

c语言入门

在 C 和 C++ 中将 int 值转换为 char 指针差异

怎么把int转换为char类型