Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET将字母数字转换为整数_Vb.net - Fatal编程技术网

VB.NET将字母数字转换为整数

VB.NET将字母数字转换为整数,vb.net,Vb.net,如果Textbox1.text包含字符串值ZU4,如何将该字符串转换为数字ASCII码,并将其输出到第二个文本框 我想使用一个FOR循环条件语句来实现这一点,它将读取输入中的每个字符 样本: INPUT Textbox1.Text = ZU4 OUTPUT Textbox2.Text = 908552 这里有一种方法,用C#表示: VB.NET: Textbox2.Text = String.Empty For Each c As Char In Textbox1.Text Textbo

如果
Textbox1.text
包含字符串值
ZU4
,如何将该字符串转换为数字ASCII码,并将其输出到第二个文本框

我想使用一个
FOR循环
条件语句来实现这一点,它将读取输入中的每个字符

样本:

INPUT  Textbox1.Text = ZU4
OUTPUT Textbox2.Text = 908552
这里有一种方法,用C#表示:

VB.NET:

Textbox2.Text = String.Empty
For Each c As Char In Textbox1.Text
  Textbox2.Text = Textbox2.Text + Convert.ToInt32(c).ToString()
Next
它:

  • 清除
    Textbox2.Text
  • 循环输入中的每个字符
  • 将整数值输出作为字符串连接到输出文本
    • 这里有一种方法,用C#表示:

      VB.NET:

      Textbox2.Text = String.Empty
      For Each c As Char In Textbox1.Text
        Textbox2.Text = Textbox2.Text + Convert.ToInt32(c).ToString()
      Next
      
      它:

      • 清除
        Textbox2.Text
      • 循环输入中的每个字符
      • 将整数值输出作为字符串连接到输出文本

      我修改了这段代码

      用法:

         Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
              TextBox2.Text = AsciiEncode(TextBox1.Text)
          End Sub
      

      我修改了这个代码

      用法:

         Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
              TextBox2.Text = AsciiEncode(TextBox1.Text)
          End Sub
      

      您还可以使用LINQ:

      TextBox2.Text = String.Join(String.Empty, From c In Textbox1.Text.ToCharArray Select (Asc(c).ToString))
      

      可能对一些工作面试有用…:)

      您也可以使用LINQ:

      TextBox2.Text = String.Join(String.Empty, From c In Textbox1.Text.ToCharArray Select (Asc(c).ToString))
      

      可能对一些工作面试有用…:)

      所有其他答案都适用于给定的示例,但是,有些建议使用unicode编码而不是ASCII编码。如果严格遵守ASCII编码很重要,那么应该明确指定要使用的编码

      Convert.ToInt32
      使用UTF-16编码。我不确定什么是
      CInt
      ,但我怀疑它的工作原理是一样的。使用
      Asc
      更好,但它仍然依赖于线程的代码页设置,因此它仍然不是完全安全的。除此之外,
      Asc
      是VB.NET中提供的一个旧VB6函数,主要用于向后兼容

      因此,我建议改用
      ascienceoding
      类。您可以使用
      System.Text
      命名空间中
      Encoding
      类的共享
      ASCII
      属性获取该类的实例,例如:

      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              builder.Append(b.ToString())
          Next
          Return builder.ToString()
      End Function
      
      然后,您可以这样调用函数:

      Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()  ' Throws an exception if the value is three digits
              End If
              builder.Append(b.ToString("00"))  ' Adds a leading zero to one-digit values
          Next
          Return builder.ToString()
      End Function
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          Dim digitsSinceHyphen As Integer = 0
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()
              End If
              builder.Append(b.ToString("00"))
              digitsSinceHyphen += 2
              If digitsSinceHyphen >= 4 Then
                  builder.Append("-")
                  digitsSinceHyphen = 0
              End If
          Next
          Return builder.ToString()
      End Function
      
      但是,除非每个字符都是两位数,否则我无法想象结果字符串是否可用。因此,我会通过如下操作将其强制为两位数:

      Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()  ' Throws an exception if the value is three digits
              End If
              builder.Append(b.ToString("00"))  ' Adds a leading zero to one-digit values
          Next
          Return builder.ToString()
      End Function
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          Dim digitsSinceHyphen As Integer = 0
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()
              End If
              builder.Append(b.ToString("00"))
              digitsSinceHyphen += 2
              If digitsSinceHyphen >= 4 Then
                  builder.Append("-")
                  digitsSinceHyphen = 0
              End If
          Next
          Return builder.ToString()
      End Function
      
      如您在下面的评论中所述,要在每四位数字后添加一个连字符,只需跟踪自最后一个连字符以来添加的总数字,如下所示:

      Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()  ' Throws an exception if the value is three digits
              End If
              builder.Append(b.ToString("00"))  ' Adds a leading zero to one-digit values
          Next
          Return builder.ToString()
      End Function
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          Dim digitsSinceHyphen As Integer = 0
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()
              End If
              builder.Append(b.ToString("00"))
              digitsSinceHyphen += 2
              If digitsSinceHyphen >= 4 Then
                  builder.Append("-")
                  digitsSinceHyphen = 0
              End If
          Next
          Return builder.ToString()
      End Function
      

      所有其他答案都适用于给定的示例,但是,有些建议使用unicode编码而不是ASCII。如果严格遵守ASCII编码很重要,那么应该明确指定要使用的编码

      Convert.ToInt32
      使用UTF-16编码。我不确定什么是
      CInt
      ,但我怀疑它的工作原理是一样的。使用
      Asc
      更好,但它仍然依赖于线程的代码页设置,因此它仍然不是完全安全的。除此之外,
      Asc
      是VB.NET中提供的一个旧VB6函数,主要用于向后兼容

      因此,我建议改用
      ascienceoding
      类。您可以使用
      System.Text
      命名空间中
      Encoding
      类的共享
      ASCII
      属性获取该类的实例,例如:

      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              builder.Append(b.ToString())
          Next
          Return builder.ToString()
      End Function
      
      然后,您可以这样调用函数:

      Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()  ' Throws an exception if the value is three digits
              End If
              builder.Append(b.ToString("00"))  ' Adds a leading zero to one-digit values
          Next
          Return builder.ToString()
      End Function
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          Dim digitsSinceHyphen As Integer = 0
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()
              End If
              builder.Append(b.ToString("00"))
              digitsSinceHyphen += 2
              If digitsSinceHyphen >= 4 Then
                  builder.Append("-")
                  digitsSinceHyphen = 0
              End If
          Next
          Return builder.ToString()
      End Function
      
      但是,除非每个字符都是两位数,否则我无法想象结果字符串是否可用。因此,我会通过如下操作将其强制为两位数:

      Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()  ' Throws an exception if the value is three digits
              End If
              builder.Append(b.ToString("00"))  ' Adds a leading zero to one-digit values
          Next
          Return builder.ToString()
      End Function
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          Dim digitsSinceHyphen As Integer = 0
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()
              End If
              builder.Append(b.ToString("00"))
              digitsSinceHyphen += 2
              If digitsSinceHyphen >= 4 Then
                  builder.Append("-")
                  digitsSinceHyphen = 0
              End If
          Next
          Return builder.ToString()
      End Function
      
      如您在下面的评论中所述,要在每四位数字后添加一个连字符,只需跟踪自最后一个连字符以来添加的总数字,如下所示:

      Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()  ' Throws an exception if the value is three digits
              End If
              builder.Append(b.ToString("00"))  ' Adds a leading zero to one-digit values
          Next
          Return builder.ToString()
      End Function
      
      Public Function ConvertTextToAsciiDigits(text As String) As String
          Dim builder As New StringBuilder()
          Dim digitsSinceHyphen As Integer = 0
          For Each b As Byte In Encoding.ASCII.GetBytes(text)
              If b > 99 then
                  Throw New FormatException()
              End If
              builder.Append(b.ToString("00"))
              digitsSinceHyphen += 2
              If digitsSinceHyphen >= 4 Then
                  builder.Append("-")
                  digitsSinceHyphen = 0
              End If
          Next
          Return builder.ToString()
      End Function
      

      首先,解释一下你是如何从输入到输出的。你的意思是
      Z==90
      U==85
      等等吗?首先,解释一下你是如何从输入到输出的。你的意思是
      Z==90
      U==85
      etc?尽管这会自动更改TextBox2中的值,但这与之前发布的内容相同。Text quicky..极好的答案..这会快速回答我的问题..非常感谢..这与之前发布的内容相同,尽管这会自动更改TextBox2中的值。Text quicky..极好回答..这很快回答了我的问题..非常感谢..这一个也是一样..有直接简单的代码和逐行解释..谢谢Oded..这一个适合初学者使用Convert.ToInt32()这一个也是一样的。有直接简单的代码和逐行的解释。谢谢Oded。这一个对于使用Convert.ToInt32()的初学者很好我没有LINQ方面的知识,但我会尽快找出答案,用你最短的一行代码学习LINQ。这一行可以节省数千字节的代码。谢谢你,格泽戈尔齐没有LINQ方面的知识,但我会尽快找出答案,用你最短的一行代码学习LINQ。这一行可以节省数千字节的代码。谢谢你格泽戈尔兹·史蒂文。怎么样关于在Textbox2.Text中的每四(4)个字符中添加一个hypen“-”,那么您希望在每组四位数字后都添加一个连字符吗?比如每两个字节值之后?比如“9085-52”?哎呀。一对小虫子。我修正了答案中的例子。它们现在应该可以正常工作了。嗨,史蒂文。在Textbox2.Text中的每四(4)个字符中加一个hypen“-”怎么样?所以你想在每一组四位数后面加一个连字符吗?比如每两个字节值之后?比如“9085-52”?哎呀。一对小虫子。我修正了答案中的例子。它们现在应该能正常工作了。