java - (Java) 将符号字符串转换为单位数字整数数组

标签 java parsing processing

我正在尝试获取一个字符串,即 $!#,将每个单独的符号转换为其相应的 ASCII 值,这里是 36, 33, 35 和然后最终得到一个整数数组,每个数字存储在单独的索引中,即 3, 6, 3, 3, 3, 5

简而言之:从 $!#$,!,#36, 33, 353, 6 , 3, 3, 3, 5

由于我使用的是Processing(Java 的包装器),所以到目前为止我的SO 研究让我受益匪浅:

String str = "$!#";
byte[] b = str.getBytes();

for (int i=0; i<b.length; i++){
 println(b[i]); 
}

我最终得到了 ASCII 值。字节数组 b 包含 [36, 33, 35]

现在,如果这些是字符串而不是字节,我将使用 String.valueOf(b) 来获取 363335,然后将整个内容再次拆分为单个数字整数数组。

我想知道这种方法是否不必要地复杂,并且可以通过更少的转换步骤来完成。有什么建议吗?

最佳答案

老实说,如果我是你,在你遇到实际问题之前我不会太担心“效率”。编写您理解的代码。如果您遇到效率问题,则必须准确定义您的意思:是否采取了太多步骤?是不是时间太长了?您输入的大小是多少?

请注意,您概述的方法和下面的方法都是 O(N),这可能是您能得到的最好的方法。

如果您在 O(N) 内有一个特定的瓶颈,那么您应该进行一些分析来找出它在哪里。但您不应该仅仅因为您“感觉”某些东西“效率低下”而费心进行微优化(或不寒而栗过早的优化)。

引自this answer :

...in the absence of measured performance issues you shouldn't optimize because you think you will get a performance gain.

如果我是你,我只会使用 charAt() 函数来获取 String 中的每个 char,然后使用int() 函数将 char 转换为 int。然后,您可以将这些 int 值添加到 String(或者更好的是,StringBuilder):

String str = "$!#";

StringBuilder digits = new StringBuilder();
for (int i=0; i<str.length(); i++) {
  int c = int(str.charAt(i));
  digits.append(c);
}

然后您可以使用 split() 函数将它们拆分为单独的数字:

String[] digitArray = digits.toString().split("");
for (String d : digitArray) {
  println(d);
}

打印:

3
6
3
3
3
5

有很多不同的方法可以做到这一点:例如,您可以使用 toCharArray() 函数而不是 charAt()。但是,除非您准确定义效率的含义,否则这一切都不会变得更加“高效”。

关于java - (Java) 将符号字符串转换为单位数字整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39492320/

相关文章:

java - 将对象写入输出文本文件

java - Java 中的 ECEF 到 lla (lat,lon,alt)

java - 关于提取 jar 的 META-INF(是一个目录)

c - 从标准输入读取输入直到空行

opencv - 使用opencv进行处理的UnsatisfiedLinkError

Java从数组中拆分字符串

java - java中GMT解析的意外结果

用于提取与函数相关的 C 文档注释的 Python 代码

javascript - 修复粒子系统处理中的错误

error-handling - Processing.org 应用程序有时会在没有任何迹象的情况下崩溃