将整数资源的十六进制更改为String

时间:2017-02-28 20:22:13

标签: android hex

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

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

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

    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 我的错在哪里?

1 个答案:

答案 0 :(得分:0)

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

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

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

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