Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- + (NSString*) serializeDeviceToken:(NSData*) deviceToken
- {
- NSMutableString *str = [NSMutableString stringWithCapacity:64];
- int length = [deviceToken length];
- char *bytes = malloc(sizeof(char) * length);
- [deviceToken getBytes:bytes length:length];
- for (int i = 0; i < length; i++)
- {
- [str appendFormat:@"%02.2hhX", bytes[i]];
- }
- free(bytes);
- return str;
- }
- #import <Foundation/Foundation.h>
- @interface NSData (NSData_Conversion)
- #pragma mark - String Conversion
- - (NSString *)hexadecimalString;
- @end
- #import "NSData+Conversion.h"
- @implementation NSData (NSData_Conversion)
- #pragma mark - String Conversion
- - (NSString *)hexadecimalString {
- /* Returns hexadecimal string of NSData. Empty string if data is empty. */
- const unsigned char *dataBuffer = (const unsigned char *)[self bytes];
- if (!dataBuffer)
- return [NSString string];
- NSUInteger dataLength = [self length];
- NSMutableString *hexString = [NSMutableString stringWithCapacity:(dataLength * 2)];
- for (int i = 0; i < dataLength; ++i)
- [hexString appendString:[NSString stringWithFormat:@"%02lx", (unsigned long)dataBuffer[i]]];
- return [NSString stringWithString:hexString];
- }
- @end
- NSData *someData = ...;
- NSString *someDataHexadecimalString = [someData hexadecimalString];
- const unsigned *tokenBytes = [deviceToken bytes];
- NSString *hexToken = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
- ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
- ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
- ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
- @implementation NSData (Hex)
- - (NSString*)hexString {
- NSUInteger length = self.length;
- unichar* hexChars = (unichar*)malloc(sizeof(unichar) * (length*2));
- unsigned char* bytes = (unsigned char*)self.bytes;
- for (NSUInteger i = 0; i < length; i++) {
- unichar c = bytes[i] / 16;
- if (c < 10) c += '0';
- else c += 'A' - 10;
- hexChars[i*2] = c;
- c = bytes[i] % 16;
- if (c < 10) c += '0';
- else c += 'A' - 10;
- hexChars[i*2+1] = c;
- }
- NSString* retVal = [[NSString alloc] initWithCharactersNoCopy:hexChars
- length:length*2
- freeWhenDone:YES];
- return [retVal autorelease];
- }
- @end
- + (NSString *)stringWithHexFromData:(NSData *)data
- {
- NSString *result = [[data description] stringByReplacingOccurrencesOfString:@" " withString:@""];
- result = [result substringWithRange:NSMakeRange(1, [result length] - 2)];
- return result;
- }
- @interface NSData (HexString)
- @end
- @implementation NSData (HexString)
- - (NSString *)hexString {
- NSMutableString *string = [NSMutableString stringWithCapacity:self.length * 3];
- [self enumerateByteRangesUsingBlock:^(const void *bytes, NSRange byteRange, BOOL *stop){
- for (NSUInteger offset = 0; offset < byteRange.length; ++offset) {
- uint8_t byte = ((const uint8_t *)bytes)[offset];
- if (string.length == 0)
- [string appendFormat:@"%02X", byte];
- else
- [string appendFormat:@" %02X", byte];
- }
- }];
- return string;
- }
- if (string.length == 0)
- [string appendFormat:@"%02X", byte];
- else
- [string appendFormat:@" %02X", byte];
- [string appendFormat:@"%02X", byte];
- /**
- * Serialize NSData to Base64 encoded NSString
- */
- -(void) serialize:(NSData*)data {
- self.encodedData = [GTMBase64 stringByEncodingData:data];
- }
- /**
- * Deserialize Base64 NSString to NSData
- */
- -(NSData*) deserialize {
- return [GTMBase64 decodeString:self.encodedData];
- }
- @implementation NSData (Extn)
- - (NSString *)description
- {
- NSMutableString *str = [[NSMutableString alloc] init];
- const char *bytes = self.bytes;
- for (int i = 0; i < [self length]; i++) {
- [str appendFormat:@"%02hhX ", bytes[i]];
- }
- return [str autorelease];
- }
- @end
- Now you can call NSLog(@"hex value: %@", data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement