Advertisement
Guest User

Untitled

a guest
Aug 1st, 2014
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.03 KB | None | 0 0
  1. + (NSString*) serializeDeviceToken:(NSData*) deviceToken
  2. {
  3. NSMutableString *str = [NSMutableString stringWithCapacity:64];
  4. int length = [deviceToken length];
  5. char *bytes = malloc(sizeof(char) * length);
  6.  
  7. [deviceToken getBytes:bytes length:length];
  8.  
  9. for (int i = 0; i < length; i++)
  10. {
  11. [str appendFormat:@"%02.2hhX", bytes[i]];
  12. }
  13. free(bytes);
  14.  
  15. return str;
  16. }
  17.  
  18. #import <Foundation/Foundation.h>
  19.  
  20. @interface NSData (NSData_Conversion)
  21.  
  22. #pragma mark - String Conversion
  23. - (NSString *)hexadecimalString;
  24.  
  25. @end
  26.  
  27. #import "NSData+Conversion.h"
  28.  
  29. @implementation NSData (NSData_Conversion)
  30.  
  31. #pragma mark - String Conversion
  32. - (NSString *)hexadecimalString {
  33. /* Returns hexadecimal string of NSData. Empty string if data is empty. */
  34.  
  35. const unsigned char *dataBuffer = (const unsigned char *)[self bytes];
  36.  
  37. if (!dataBuffer)
  38. return [NSString string];
  39.  
  40. NSUInteger dataLength = [self length];
  41. NSMutableString *hexString = [NSMutableString stringWithCapacity:(dataLength * 2)];
  42.  
  43. for (int i = 0; i < dataLength; ++i)
  44. [hexString appendString:[NSString stringWithFormat:@"%02lx", (unsigned long)dataBuffer[i]]];
  45.  
  46. return [NSString stringWithString:hexString];
  47. }
  48.  
  49. @end
  50.  
  51. NSData *someData = ...;
  52. NSString *someDataHexadecimalString = [someData hexadecimalString];
  53.  
  54. const unsigned *tokenBytes = [deviceToken bytes];
  55. NSString *hexToken = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
  56. ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
  57. ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
  58. ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
  59.  
  60. @implementation NSData (Hex)
  61. - (NSString*)hexString {
  62. NSUInteger length = self.length;
  63. unichar* hexChars = (unichar*)malloc(sizeof(unichar) * (length*2));
  64. unsigned char* bytes = (unsigned char*)self.bytes;
  65. for (NSUInteger i = 0; i < length; i++) {
  66. unichar c = bytes[i] / 16;
  67. if (c < 10) c += '0';
  68. else c += 'A' - 10;
  69. hexChars[i*2] = c;
  70. c = bytes[i] % 16;
  71. if (c < 10) c += '0';
  72. else c += 'A' - 10;
  73. hexChars[i*2+1] = c;
  74. }
  75. NSString* retVal = [[NSString alloc] initWithCharactersNoCopy:hexChars
  76. length:length*2
  77. freeWhenDone:YES];
  78. return [retVal autorelease];
  79. }
  80. @end
  81.  
  82. + (NSString *)stringWithHexFromData:(NSData *)data
  83. {
  84. NSString *result = [[data description] stringByReplacingOccurrencesOfString:@" " withString:@""];
  85. result = [result substringWithRange:NSMakeRange(1, [result length] - 2)];
  86. return result;
  87. }
  88.  
  89. @interface NSData (HexString)
  90. @end
  91.  
  92. @implementation NSData (HexString)
  93.  
  94. - (NSString *)hexString {
  95. NSMutableString *string = [NSMutableString stringWithCapacity:self.length * 3];
  96. [self enumerateByteRangesUsingBlock:^(const void *bytes, NSRange byteRange, BOOL *stop){
  97. for (NSUInteger offset = 0; offset < byteRange.length; ++offset) {
  98. uint8_t byte = ((const uint8_t *)bytes)[offset];
  99. if (string.length == 0)
  100. [string appendFormat:@"%02X", byte];
  101. else
  102. [string appendFormat:@" %02X", byte];
  103. }
  104. }];
  105. return string;
  106. }
  107.  
  108. if (string.length == 0)
  109. [string appendFormat:@"%02X", byte];
  110. else
  111. [string appendFormat:@" %02X", byte];
  112.  
  113. [string appendFormat:@"%02X", byte];
  114.  
  115. /**
  116. * Serialize NSData to Base64 encoded NSString
  117. */
  118. -(void) serialize:(NSData*)data {
  119.  
  120. self.encodedData = [GTMBase64 stringByEncodingData:data];
  121.  
  122. }
  123.  
  124. /**
  125. * Deserialize Base64 NSString to NSData
  126. */
  127. -(NSData*) deserialize {
  128.  
  129. return [GTMBase64 decodeString:self.encodedData];
  130.  
  131. }
  132.  
  133. @implementation NSData (Extn)
  134.  
  135. - (NSString *)description
  136. {
  137. NSMutableString *str = [[NSMutableString alloc] init];
  138. const char *bytes = self.bytes;
  139. for (int i = 0; i < [self length]; i++) {
  140. [str appendFormat:@"%02hhX ", bytes[i]];
  141. }
  142. return [str autorelease];
  143. }
  144.  
  145. @end
  146.  
  147. Now you can call NSLog(@"hex value: %@", data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement