【问题标题】:Converting String to byte from XML file将 XML 文件中的字符串转换为字节
【发布时间】:2016-02-07 12:41:36
【问题描述】:

我很难完成我的代码。我正在解析一个 XML,它返回给我 String 值(使用 xpp.getAttributeValue(0);)。但是,在我的实际代码中,我需要 byte 而不是 String

简单的转换是Byte.valueOf(String);,但是返回的值不正确!

XML 示例:

<userId value="0xAA"></userId>

当我解析这个时:

String stringUserId = xpp.getAttributeValue(0);

然后将其转换为字节:

byte byteUserId = Byte.valueOf(stirngUserId);

我没有得到 0xAA 值。有人可以帮我吗?

【问题讨论】:

  • 你得到了什么价值?请记住,byte 已签名,因此 0xAA 是一个负数。
  • @Thilo 抱歉,忘记写下来了,现在我不在 PC 旁边了。但它绝对不是 0xAA!

标签: java android xml


【解决方案1】:

试试这个。

String stringUserId = xpp.getAttributeValue(0);
byte byteUserId[] = stringUserId.getBytes() ;

其实Stringbytes的数组。

【讨论】:

  • 这将为您提供四个字节,其 ASCII 编码值为 '0'、'x'、'A'、'A'。可能不是 AndroidDev101 想要的。
  • 这是位模式
  • 我想避免转换每个 ASCII。我只想得到 0xAA,但不是在 String 中的字节格式,因为它默认使用 XmlPullParser。感谢您的建议,无论如何我一回到 PC 就会测试它。
  • @Thilo 大家好,所以我试过了,但没有用。我需要 int 作为 0xAA 或 byte 作为 0xAA。使用 XML 我得到 String="0xAA"。而且我不知道如何将其转换为简单的删除“”并将其保存为 int 或 byte(不是字节数组)。
【解决方案2】:

Byte.valueOf(string) 不返回原生 byte 类型,它返回 Byte。尝试做这样的事情:

Byte byteobj = Byte.valueOf(stirngUserId);
byte byteUserId = byteobj.byteValue();

【讨论】:

  • 谢谢,我会尽快测试,如果有效,我接受答案。
  • 嗨丹尼尔,不幸的是,这对我没有用。你还有什么建议吗?我只想从String中删除“”,这样我就只得到0xAA并将其保存为字节或int(不是字节数组)。
  • 它一直说“invalid int: 0xAA”
【解决方案3】:

试试Integer#decode。它应该理解“0x”的语法。

int x = Integer.decode(stringUserId);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多