【发布时间】:2014-02-14 10:05:22
【问题描述】:
我正在尝试创建一个 Android 应用程序,它将普通的十六进制代码转换为在 smali 中使用的反转代码。除了当我在 String 上使用 replace 或 replaceAll 方法时,一切都运行良好,它甚至替换了已经替换的字符
例如,
String stringInvert = string.replace("F", "0")
.replace("E" , "1")
.replace("D" , "2")
.replace("C" , "3")
.replace("B" , "4")
.replace("A" , "5")
.replace("9" , "6")
.replace("8" , "7")
.replace("7" , "8")
.replace("6" , "9")
.replace("5" , "A")
.replace("4" , "B")
.replace("3" , "C")
.replace("2" , "D")
.replace("1" , "E")
.replace("0" , "F");
如你所见,第一个F变成了0,其他的字母也同样改变了,但是后面的0变成了F,这也把已经改变的F变回了F。所以,总而言之,只有7 之前的字母/数字被反转(因为它们在代码中被替换),其他的由于双重反转而保持不变。我什至尝试了 replaceAll 方法,它给出了相同的结果。那么有没有其他方法或解决这个问题的方法?
完整代码在这里 - http://pastebin.com/dB23JmQG
对不起,如果代码很难看,我是在 AIDE 中完成的
谢谢
【问题讨论】: