【问题标题】:how to Add zero on the left of decimal number?如何在十进制数的左边加零?
【发布时间】:2016-03-24 20:03:28
【问题描述】:

此代码用于从 Ascii 转换为十进制,但我无法在(2 位)左侧添加零

Dim sText As String 
Dim i As Integer 
Dim lenText As Integer 
sText = TextBox6.Text 
lenText = Len(sText) 
For i = 1 To lenText 
    sASC = sASC & CStr(Asc(Mid$(sText, i, 1))) 
Next i 
m = sASC `

【问题讨论】:

  • 此代码将采用一个字符串,并将字符串中每个字符的 ascii 连接起来。所以“ABC123”>> 656667495051。请澄清您的问题“如何在十进制数的左侧添加零?”与您的代码相关,反之亦然。
  • 例如:我在 textbox.text (qussai) 中输入我的姓名,十进制 = 11311711511597105 但我想要这样的结果:0113,0117,0115,0115,0097,0105 我想进行操作到每 4 位数字。例如:0113^5=18424351793 0117^5=21924480357。 . . .输出将是这样的:1842435179321924480357。你明白了吗?

标签: vb.net string character decimal ascii


【解决方案1】:

用一些linq替换注释代码

'For i = 1 To lenText
'    sASC = sASC & CStr(Asc(Mid$(sText, i, 1)))
'Next i

sASC = sText.
    Select(Function(t) String.Format("{0:0000}", Asc(t))).
    Aggregate(Function(t1, t2) t1 & "," & t2)

它将重新选择您的数字,格式化为始终具有 [至少] 4 个字符,任何前导额外空格为 0。然后它将结果放在一起(聚合),并用“,”连接。

输入:qussai

输出:0113,0117,0115,0115,0097,0105

从您评论中的其他信息来看,字符串并不是您代码中的最佳载体。您有来自Asc() 的数值,然后您将进行数值运算以提高到 5 次方。最好使用 Asc 值进行数学运算,然后创建一个字符串。这样做以获得所需的结果:

sASC = sText.
    Select(Function(t) Math.Pow(Asc(t), 5).ToString()).
    Aggregate(Function(t1, t2) t1 & t2)

输入:qussai

输出:18424351793219244803572011357187520113571875858734025712762815625

【讨论】:

  • 非常感谢,它的工作,但你能把这个 c = BigInteger.Pow(t, 47) Mod 1073 放在同一个代码中!
  • 这是十进制的,我想输入它:“912,697,583,1065,261”,我想对逗号之间的每组数字进行运算,然后将其转换为ASCII???跨度>
【解决方案2】:

如果我理解正确,您想在结果字符串的两位十进制值的每个十进制值中填充一个零,那么您可以这样做:

<HideModuleName>
Public Module StringExtensions

    <Extension>
    Public Function ToDecimals(ByVal sender As String) As String

        Dim sb As New StringBuilder(capacity:=(sender.Length * 3))
        For Each c As Char In sender
            sb.AppendFormat("{0:000}", Convert.ToInt32(c))
        Next c
        Return sb.ToString

    End Function

End Module

用法:

Dim dec As String = "ABC".ToDecimals()
Console.WriteLine(dec)

这将产生:

065066067


更新

Private Sub ButtonCalc_Click() Handles ButtonCalc.Click

    Dim input As String = Me.TextBox1.Text
    Me.TextBox2.Text = StringToDecimals(input)

End sub

' Rehusable function.
Public Shared Function StringToDecimals(ByVal str As String) As String

    Dim sb As New StringBuilder(capacity:=(str.Length * 3))
    For Each c As Char In str
        sb.AppendFormat("{0:000}", Convert.ToInt32(c))
    Next c
    Return sb.ToString

End Function

【讨论】:

  • 你能重写你的代码吗,使用 textbox1.text 输入和 textbox2.text 输出和按钮计算。因为我是初学者,我没有像你写的那样使用(模块)。谢谢。
  • @qussai 请查看更新。欢迎来到 StackOverflow,如果我解决了您的疑问,请记得将答案标记为已接受!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
相关资源
最近更新 更多