我有准备的消息为MD5 Munge时间的NSMutableString stringWithFormat
private static char[] jimsCopyRight = {
'C', 'O', 'P', 'Y', 'R', 'I',“G java代码','h', 't',':','',0xa9,''};
其在
StringBuffer message = new StringBuffer();
message.append使用(name.toLowerCase()); message.append(new String(jimsCopyRight));
当我打印出使用
for(int i = 0; i < message.length(); i++){
的System.out.println(该消息的 “i = ”+ 1 +“ 字符 ”+ message.substring(I,I + 1)+“ 的charAt” + message.charAt(I)); }
我得到I = 14炭\ 251的charAt \ 251和message.toString是jimCopyright:\ 251
我需要构造的NSMutableString以相同字符。
在我试图
wDevCopyright = [NSString stringWithFormat:@"jimCopyright: %c ", 0xa9];
for(int i = 0; i < [message length]; i++){
NSLog(@"i = %d char %c %d", i, [message characterAtIndex:i], [message characterAtIndex:i]);
}
这事给我,我= 14字符©169
中获得的NSMutableString是相同的StringBuffer可以理解的任何帮助。
的问题是,当我Munge时间两个字符串的MD5中我得到不同的结果,当我加入0xa9。打印只是为了看看字符串。
我在想它与Java中的char []和NSMutableString的构造有关。我不相信他们是相同的价值观。
我有一些C代码,它声明的版权为
#define jimsCopyRight "Copyright: � "
版权的MD5的Java和C MD5是相同的。
0xa9是169,并且unicode char 169是(c)符号,所以问题真的是,为什么java case想到它的char 251? – superfell 2010-11-20 22:59:50
看来,在你的java情况下,你的输出流不是unicode,你正在查看输出流本身,并且你看到一些不同的编码结果,如果你改变你的循环为 – superfell 2010-11-20 23:03:32
ystem.out.println (“i =”+ i +“char”+ message.substring(i,i + 1)+“charAT”+ Integer.valueOf(message.charAt(i)));你会发现char仍然是codepoint 169(i = 11 char©charAT 169) – superfell 2010-11-20 23:04:01