首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将AlphaNumeric转换为整数

将AlphaNumeric转换为整数
EN

Stack Overflow用户
提问于 2012-12-29 23:05:03
回答 5查看 1.8K关注 0票数 1

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

我想使用一个FOR LOOP条件语句来读取输入中的每个字符。

示例:

代码语言:javascript
复制
INPUT  Textbox1.Text = ZU4
OUTPUT Textbox2.Text = 908552
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-12-30 03:11:24

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

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

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

代码语言:javascript
复制
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

然后,您可以像这样调用该函数:

代码语言:javascript
复制
Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)

但是,我无法想象得到的字符串将是可用的,除非每个字符都以两位数字为结果。因此,我将强制它为两位数,如下所示:

代码语言:javascript
复制
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

要在每隔四个数字后添加一个连字符,就像您在下面的评论中提到的那样,您可以跟踪自最后一个连字符以来添加的总数字,如下所示:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2012-12-29 23:30:09

您还可以使用LINQ:

代码语言:javascript
复制
TextBox2.Text = String.Join(String.Empty, From c In Textbox1.Text.ToCharArray Select (Asc(c).ToString))

在一些求职面试中会很有用。:)

票数 1
EN

Stack Overflow用户

发布于 2012-12-29 23:07:50

这里有一种方法,在C#中:

代码语言:javascript
复制
Textbox2.Text = string.Empty;
foreach(var c in Textbox1.Text)
{
  Textbox2.Text += ((int)c).ToString();
}

VB.NET:

代码语言:javascript
复制
Textbox2.Text = String.Empty
For Each c As Char In Textbox1.Text
  Textbox2.Text = Textbox2.Text + Convert.ToInt32(c).ToString()
Next

It:

输出文本清除input

  • Concatenates中每个字符的整数值,将其作为字符串输出到
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14082917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档