【问题标题】:converting string to array of integers fast快速将字符串转换为整数数组
【发布时间】:2012-04-10 19:20:02
【问题描述】:

将字符串转换为表示字符代码的短整数数组的最快方法是什么?

我现在正在使用它,但它可能会更快:

Dim shortsarray(mystring.Length - 1) as Short
For i As Integer = 0 To mystring.Length - 1
  shortsarray(i) = AscW(mystring.Chars(i))
Next

谢谢。

【问题讨论】:

  • 您在寻找什么字符编码? ASCII?你为什么要寻找“更快”的东西?您是否遇到了您确定在这段代码中的性能问题?
  • @Oded 我的意思是 Unicode 值(作为 Strings.AscW 函数返回)
  • @Oded 这段代码会运行很多,所以为了效率(以及学习一些东西)我想知道最快的方法
  • @JonEgerton Doh,我读的是Dim shortsarray(mystring.Length - 1) As New Short
  • AscW 实现为Return CInt(char)。你真的认为这可以改进吗?

标签: vb.net string


【解决方案1】:

我不知道您要解决什么样的问题。但是,作为替代方案,您可以将字符串转换为字符数组

Dim chars() As Char = mystring.ToCharArray()

【讨论】:

  • OP 不想创建一个新的字符数组,而是为字符串中的每个字符创建一个短数组。 msdn.microsoft.com/en-us/library/zew1e4wc%28v=vs.90%29.aspx
  • 我知道。我只是想展示这种可能性作为替代方案。也许他可以使用它,也许不能。
  • @Olivier 不,我需要一系列短裤
【解决方案2】:
Dim shortsarray(mystring.Length - 1) as Short //One calculation
For i As Integer = 0 To mystring.Length - 1   //One calculation, repeats n times
  shortsarray(i) = AscW(mystring.Chars(i))    //Three calculations, repeats n times
Next

因此,这应该在 O(3n+1) 或 O(n) 中运行。这与输入的长度呈线性关系,并且由于您正在进行字符转换,因此您无法期望得到太大的改进。我认为这可能与您期望的一样好,尽管可能有一个库可以一次性转换整个单词,从而使您的代码更清晰。

如果您需要提高性能,您需要先对整个程序进行概要分析。这个 sn-p 可能不是问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 2015-03-20
    • 2020-01-13
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 2021-03-08
    相关资源
    最近更新 更多