Ben MD5 MungeNSMutableString stringWithFormat
private static char[] jimsCopyRight = {
'C', 'O', 's', 'y', 'r', 'i', 'g bir mesajı hazırlar Java kodu ',' h ', ' t ',': ',' ', 0xa9,' '};
StringBuffer message = new StringBuffer();
message.append kullanılan
(name.toLowerCase()); message.append (yeni Dize (jimsCopyRight)); I
for(int i = 0; i < message.length(); i++){
System.out.println (kullanarak mesajı yazdırmak
"i = "+ i message.substring (i +" kömürü "+ i + 1)" charAt" + message.charAt (i)); }
I = 14 karakter \ 251 charAt \ 251 alır ve message.toString jimCopyright olduğu: 251
\ aynı karakterlerle bir NSMutableString inşa etmek gerekir. Ben
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]);
}
denedi şeylerin yanı sıra
bana i verir = 14 karakter © 169
takdir edilecektir StringBuffer aynı olacak şekilde NSMutableString almakla Herhangi bir yardım.
Sorun MD5 iki dizeleri gizleyin zaman 0xa9 eklerken ben farklı sonuçlar elde edilmesi. Baskılar sadece iplere bakmak içindir.
Java'da char [] ve NSMutableString yapısıyla ilgili bir şey olduğunu düşünüyorum. Onların aynı değerler olduğuna inanmıyorum.
Bazı C kodu var ve
#define jimsCopyRight "Copyright: � "
telif Java MD5 ve C MD5 aynı şekilde telif beyan eder.
0xa9 169, ve unicode char 169 (c) sembolüdür, bu nedenle soru gerçekten, neden java vakası char'ı 251 düşünür? – superfell
Bu, java durumunuzda, çıkış akışınızın unicode olmadığını ve çıkış akışının kendisine baktığınızı ve farklı bir kodlama sonucu görüyorsanız, – superfell
ystem.out.println döngüsünü değiştirirseniz görünür. ("i =" + i + "char" + message.substring (i, i + 1) + "charAT" + Tamsayı.valueOf (message.charAt (i))); char'ın hala kod noktası 169 olduğunu göreceksiniz (i = 11 char © charAT 169) – superfell