【问题标题】:how to store a byte [] into a single variable in android/java如何将字节 [] 存储到 android/java 中的单个变量中
【发布时间】:2013-01-27 09:06:24
【问题描述】:

我有一个String str = "admin:admin"

我想把它转换成 ASCII。

我尝试过str.getByte("US-ASCII");,这将返回一个字节[] 数组(即[97, 100, 109, 105, 110, 58, 97, 100, 109, 105, 110])。我想要单个字符串变量中的 ASCII 值。我该怎么做。

简单我想要这个字符串 strASCII = "971001091051105897100109105110"

这可能吗?

我也试过了

StringBuilder builder = new StringBuilder();
    for (int i=0; i<=b.length; i++) {
        builder.append(b);
    }
    String result = builder.toString();

但现在它返回给我这样的东西

[B@405666e0[B@405666e0[B@405666e0[B@405666e0[B@405666e0[B@405666e0[B@405666e0[B@405666e0[B@405666e0[B@405666e0[B@405666e0[B@405666e0

这是什么?

【问题讨论】:

  • 但请注意,该值无法可靠地转换回原始字符串(例如,101110 是指10 10 10 还是101 110?)。看起来您正在这里构建某种自制的弱加密或散列。这通常不是必需的,因为 Android 库中提供了非常好的选项。

标签: java android type-conversion bytearray


【解决方案1】:

尝试简单地使用StringBuilder循环:

StringBuilder builder = new StringBuilder();
for (byte b : arr) {
    builder.append(b);
}
String result = builder.toString();

当然,您可以对字符串连接做同样的事情,但显式使用 StringBuilder 会更快地处理大量小追加。

【讨论】:

  • 请看我编辑的问题我尝试了你的解决方案,但没有得到想要的结果
  • 'arr' 应该是从 str.getBytes("US-ASCII") 返回的 byte[] 数组。
  • @Qadir 您的代码与我的不同。为了让它工作,你必须使用我的(arr 是你正在迭代的数组)或者你可以使用你的标准 for 循环使用builder.append(b[i])
【解决方案2】:

使用简单的循环和字符串生成器我们也可以做到这一点。

 StringBuilder builder = new StringBuilder();
    for (int i = 0; i < b.length; i++) {
        builder.append(b[i]);
    }
    String result = builder.toString();

【讨论】:

  • 我会指出我的答案和这个完全一样,只是使用了另一种循环语法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-02
  • 2013-04-14
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多