2010-04-16 9 views
43

Tôi đang xây dựng một ứng dụng iPhone và mắc kẹt với những điều sau đây:NSData để hiển thị như là một chuỗi

unsigned char hashedChars[32]; 
CC_SHA256([inputString UTF8String], [inputString lengthOfBytesUsingEncoding:NSASCIIStringEncoding], hashedChars); 
NSData *hashedData = [NSData dataWithBytes:hashedChars length:32]; 
NSLog(@"hashedData = %@", hashedData); 

Nhật ký được thể hiện như:

hashedData = <abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh> 
  • lưu ý hashedData là NSData, không NSString

Nhưng những gì tôi cần là chuyển đổi hashedData thành NSString trông giống như:

NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh"; 

Vì vậy, về cơ bản kết quả cần phải giống như hashedData ngoại trừ tôi không muốn các dấu ngoặc nhọn và khoảng trắng ở giữa.

Trả lời

22

tôi đã tìm thấy các giải pháp và tôi nghĩ rằng tôi đã là ngu ngốc.

Về cơ bản tất cả tôi phải làm là:

NSString *someString = [NSString stringWithFormat:@"%@", hashedData]; // buộc NSData để trở thành NSString

Một lần nữa cảm ơn bạn để tất cả những ai cố gắng giúp đỡ, nhiều đánh giá cao.

+1

Hey, làm thế nào bạn chuyển đổi dữ liệu trong someString trở lại NSData? – mukaissi

2

Xác định NSCharacterSet có chứa các ký tự vi phạm sau đó lọc chuỗi của bạn bằng -stringByTrimmingCharactersInSet :.

+0

Cảm ơn Joshua. Vấn đề thực sự của tôi là hashedData là NSData, không phải NSString, vì vậy tôi nghi ngờ câu trả lời của bạn là hoàn toàn khả thi. – topace

+0

Xin lỗi về điều đó, tôi đã giả định từ bài viết gốc của bạn rằng bạn đã có một chuỗi. –

64

Sử dụng phương thức initWithData: encoding: NSString.

NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSASCIIStringEncoding]; 

(chỉnh sửa để đáp ứng với nhận xét của bạn :)

Trong trường hợp đó, câu trả lời của Giô-suê không giúp đỡ:

NSCharacterSet *charsToRemove = [NSCharacterSet characterSetWithCharactersInString:@"< >"]; 
NSString *someString = [[hashedData description] stringByTrimmingCharactersInSet:charsToRemove]; 
+0

http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#jumpTo_67 –

+1

Xin chào Noah, cảm ơn câu trả lời của bạn. Tôi đã thực sự cố gắng nhưng nó không hoạt động. Khi tôi in từ NSLog, nó hiển thị một chuỗi ký tự không phải ascii như 'u × §v' Tôi chỉ cần các dấu ngoặc nhọn và khoảng trống được xóa như đã đề cập trong câu hỏi ban đầu của tôi. – topace

+1

stringByTrimmingCharactersInSet chỉ xóa khỏi các đầu, do đó các khoảng trống sẽ vẫn tồn tại ở giữa. Điều này sẽ chỉ loại bỏ các dấu ngoặc nhọn. – lilbyrdie