【问题标题】:JAVA , String to byte array byte sizeJAVA,字符串到字节数组字节大小
【发布时间】:2017-04-22 07:07:40
【问题描述】:

我在将字节数组转换为字符串并返回时遇到问题 :) 我从 api 获得了 10 个字节长的字节数组。当我将其转换为字符串时,我会得到带有 20 个字符的字符串,例如“12345678901234567890”,所以看起来一个字节上有 2 个字符。但是,当我尝试使用 editText 中的 getText() 将其发送回来时:

String namespace = mNamespaceTv.getText().toString();

从该字符串创建的字节数组长 20 个字节,因此一个字符对应一个字节。我需要将它作为 10 字节数组再次发送回去。为什么会发生,我该如何解决?

【问题讨论】:

  • 非常不清楚您实际上在问什么。如何将 20 个字节编码为 10 个字节? (没有压缩它)
  • @AndyTurner 我不想编码任何东西。试着了解发生了什么。
  • 我怀疑您将字节表示为十六进制,在十六进制中,一个字节通常由 2 个“数字”0-F 表示,例如“8F”=> 1 个字节 = 2 个字符......每个其中将由 UTF-8 或 ASCII 中的 1 个字节表示。
  • “我不想编码任何东西”——我猜你是不小心弄的。

标签: java arrays byte


【解决方案1】:

不清楚您要问什么,但请考虑从 String 生成的字节数组的大小取决于所使用的字符集。

例如:

"ABC".getBytes("UTF-16")   --> array of size 8
"ABC".getBytes("UTF-8")    --> array of size 3
"ABC".getBytes("US-ASCII") --> array of size 3

【讨论】:

    【解决方案2】:

    如果是byte[],请使用new String(mNamespaceTv.getText()) 而不是toString()

    【讨论】:

      猜你喜欢
      • 2011-10-04
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      相关资源
      最近更新 更多