如果Textbox1.text包含ZU4字符串值,如何将该字符串转换为其数字ASCII码,并将其输出到第二个文本框中?
我想使用一个FOR LOOP条件语句来读取输入中的每个字符。
示例:
INPUT Textbox1.Text = ZU4
OUTPUT Textbox2.Text = 908552发布于 2012-12-30 03:11:24
所有其他答案都适用于您的给定示例,但是,其中一些建议使用unicode编码而不是ASCII。如果严格遵守ASCII编码很重要,那么您应该显式指定要使用的编码。
Convert.ToInt32使用UTF-16编码。我不确定CInt会做什么,但我怀疑它的工作方式是一样的。使用Asc更好,但是它仍然依赖于线程的代码页设置,所以它仍然不是完全安全的。除此之外,Asc是在VB.NET中提供的一个旧的VB6函数,主要是为了向后兼容。
因此,我建议使用ASCIIEncoding类。您可以在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发布于 2012-12-29 23:30:09
您还可以使用LINQ:
TextBox2.Text = String.Join(String.Empty, From c In Textbox1.Text.ToCharArray Select (Asc(c).ToString))在一些求职面试中会很有用。:)
发布于 2012-12-29 23:07:50
这里有一种方法,在C#中:
Textbox2.Text = string.Empty;
foreach(var c in Textbox1.Text)
{
Textbox2.Text += ((int)c).ToString();
}VB.NET:
Textbox2.Text = String.Empty
For Each c As Char In Textbox1.Text
Textbox2.Text = Textbox2.Text + Convert.ToInt32(c).ToString()
NextIt:
输出文本清除input
https://stackoverflow.com/questions/14082917
复制相似问题