Android - ASCII和HEX值

时间:2015-08-13 01:44:07

标签: android string hex ascii

如果这是重复的,首先,我很抱歉我一直在四处寻找,我还没有找到如何解决我的问题(或者我的脑袋太乱了)。

我认为如果我抛出问题而不是解释它会更好。

我有一个 int 234的整数值。我将此值转换为十六进制字符串表示形式EA。请注意,这是"EA",它是一个字符串。

然后我使用Integer.parseInt将其转换为0xEA(这是十六进制值,而不是十六进制字符串),最后我需要此值的ASCII(或字符)表示。

问题在于,当我使用Integer.toHexString对其进行解码时,我得到C3AA而不是EA

This是我发现的最佳解释。但我仍然不知道如何解决它..

我希望你能帮助我!提前谢谢!

修改

我想在UDP数据报中传输int 234,这就是我使用转换的原因。 (这个UDP通道主要发送ASCII(“234”),但我想要一个例外,偶尔用ony 1byte传输它。这就是为什么我做所有这些转换(也许它比这更容易,但我想我'我太接近了我无法清晰看到的问题)

我可以在C中轻松地做到这一点,但我需要在Java中这样做。我的脑袋疯了。

所以234 toHexString变为`hex =“EA”;

// HEX -> ASCII code
    for(int i=0; i<hex.length()-1; i+=2 ){
        String output = hex.substring(i, (i + 2));
        int decimal = Integer.parseInt(output, 16);
        result.append((char)decimal);   
    }
    return result.toString();

结果我得到了一个奇怪的角色(@fadden所说的那个)。现在提一个问题:这个值是2字节长吗?

我发送这个奇怪的字符,当我使用str = Integer.toHexString(prevResult);时,我得到了C3AA。

也许我搞砸了,但我想要的只是传输0xEA(字节)并在另一端获得int 234

例如,假设我想发送“COMMAND”一词并附加值234.通常我会发送“COMMAND234”但现在我需要命令值只有一个字节长。所以我要传输的十六进制表示将是:

0x67 0x79 0x77 0x77 0x65 0x78 0x68 0xEA C O M M A N D 234

0 个答案:

没有答案