我有java代码,它为MD5 munge准备一条消息。
private static char[] jimsCopyRight = {'C','o','p','y','r','i','g','h','t',':',‘',0xa9,'};
中使用的
StringBuffer message = new StringBuffer();message.append(name.toLowerCase());message.append(新字符串(JimsCopyRight));
当我用以下方式打印消息时
for(int i = 0; i < message.length(); i++){System.out.println(“i=”+i+“char”+ message.substring(i,i+ 1) +“charAT”+ message.charAt(i));}
I= 14 char \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]);
}这给了我i= 14 char c 169
任何帮助,使NSMutableString是相同的StringBuffer将不胜感激。
问题是,当我在MD5中处理这两个字符串时,当我添加0xa 9时,得到了不同的结果。这些指纹只是为了看一下琴弦。
我认为这与char[]中的NSMutableString和NSMutableString的构造有关。我不认为它们是相同的价值观。
我有一些C代码,它将版权声明为
#define jimsCopyRight "Copyright: � "版权的Java MD5和C MD5是相同的。
发布于 2010-11-20 23:03:06
版权符号是你想要的,对吗?根据你的问题,这就是你所得到的。那有什么问题吗?
(这就是为什么魔术数字不好的原因。我无法从您的代码中单独看出您想要的编码是什么0xa9。)
如果您想知道为什么上面写的是169而不是251,那是因为Java打印出八进制(基-8)字符转义序列,而C标准库中的%d、Core和Foundation则将值打印为十进制(基-10)。\251不是二百五十一个字.使用%o将值打印为八进制,或使用%x将其打印为十六进制(基数为-16)。或者,使用Calculator.app的编程模式将251从八进制转换为小数点。
顺便说一句,您可以使用%@格式序列和NSUserName函数将用户名插入到字符串中,就像在Java代码中所做的那样。不需要硬编码。
https://stackoverflow.com/questions/4235346
复制相似问题