[英]VB.NET: Convert string to dec in a for-loop
因此,我想從此表中將字符串轉換為dec值: http : //en.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange#ASCII-Table
例如, "hello"
應為104101108108111
然后(h = 104,e = 101 ...)。 好吧,我必須為此使用一個for循環,但似乎無法得到錯誤。
Private Function function1(text As String)
Dim dec As String
Dim i As Integer = 0
For i = 0 To text.Length
dec = dec & System.Text.ASCIIEncoding.ASCII.GetBytes(text)(i)
i += 1
Next
Return dec
End Function
它可以工作,但是如果“文本”的長度是偶數(例如,文本有2、4、6或8個字母),則會給我一個錯誤。 並且當它不均勻時(文本有1、3、5、7個字母),它只會轉換這些不均勻的字母。 因此,僅作為示例。 “ hello”的長度不均勻(5個字母)。 因此,它不會給我一個錯誤。 大! 但是,它僅將“ h”,第一個“ l”和“ o”轉換為dec。
誰能解釋我為什么以及如何解決這個問題?
您正在循環中增加計數i
。 您無需在For
循環中執行此操作。
另外,您將經過字符串的末尾。 您需要以Length - 1
結束循環
Private Function function1(text As String) As String
Dim dec As String = ""
For i As Integer = 0 To text.Length - 1
dec = dec & System.Text.ASCIIEncoding.ASCII.GetBytes(text)(i)
Next
Return dec
End Function
注意:嚴格啟用選項-從長遠來看,您一定會很高興!
循環自身增加,不增加。 它是從零開始的數組,因此14長度的文本為0 to 13
。
Private Function function1(text As String)
Dim dec As String = ""
For i As Integer = 0 To text.Length - 1
dec = dec & System.Text.ASCIIEncoding.ASCII.GetBytes(text(i))(0)
'i += 1 omit this part
Next
Return dec
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.