【问题标题】:change hex of integer resource to String将整数资源的十六进制更改为字符串
【发布时间】:2017-07-19 23:19:36
【问题描述】:

我是安卓新手。 在我的价值资源中,我创建了一个 xml 布局并将这一行放入其中:

<integer name="mode_happy"> 0x1F60A</integer>

在我的活动中,我想将 0x1F60A 转换为字符串。为此我创建了一个方法:

    private String getStringOfEmojiCode(int emogiCode) {
    StringBuilder sb = new StringBuilder();
    //convert hex to char
    sb.append(Character.toChars(emogiCode));
    return sb.toString();
}

当我将mode_happy传递给我的方法时:

mSelectedMode = 
getStringOfEmojiCode(getResources().getInteger(R.integer.mode_happy));

我收到这个: mSelectedMode: ��

但我想变成这样:0x1F60A 我的错在哪里?

【问题讨论】:

  • 试试这个sb.append(new String(Character.toChars(emogiCode)));
  • @AhmedHegazy 它没有任何变化。
  • 你把整数放在哪里了,在什么文件里?和布局的相同问题?艾哈迈德为什么会有所作为?
  • @NickCardoso 我不明白你在说什么,但我创建了资源布局并将我的十六进制数字放入其中。我在上面提到过。
  • 你也需要试试这个mSelectedMode = new String(getResources().getInteger(R.integer.mode_happy));

标签: android hex


【解决方案1】:

格式化程序可用于从特定格式的十六进制字符构建字符串:

String mSelectedMode 
       = String.format("0x%05X", getResources().getInteger(R.integer.mode_happy));

这对我有用,您存储为整数的十六进制对我来说正在转换为十进制,但使用格式化程序有效。这也意味着我不必使用任何其他方法。

说明: 0x%05X 格式采用由 %05X 表示的 5 位十六进制字符,“X”表示十六进制。可以使用小写的 x,在这种情况下会以小写形式给出输出:0x1f60a0x 被添加到格式中,以便将其作为每个字符串的前缀。有关格式化的更多详细信息,请参阅this

【讨论】:

  • 它的工作。终于我得到了答案mSelectedMode: 0x1F60A。谢谢老兄
  • @skbrhmn 有人对任何帖子投了反对票。不要难过。
  • @NickCardoso 我对格式化程序的工作不多,但我的理解是它采用 5 个字符的十六进制代码并在开头放置一个 0x。那是错的吗?这解决了 OP 的问题,除非我缺少某些东西。
  • @sayreskabir 谢谢,但我明白,只要代码有问题,就可以被否决,我很乐意纠正它或从中吸取教训。这里没有难过的感觉。如果您认为这对您有帮助并且适合您的具体情况,请点赞。
  • @skbrhmn .look,有人对任何帖子都投了反对票 :-)
猜你喜欢
  • 2015-11-29
  • 2017-08-12
  • 2021-09-29
  • 2015-04-30
  • 2014-12-15
  • 2013-12-07
相关资源
最近更新 更多