字符串轉(zhuǎn)16進(jìn)制 16進(jìn)制轉(zhuǎn)字符串
測(cè)試網(wǎng)站 http://www.bejson.com/convert/ox2str/
//e8afb7e58187e58d95313532373836e8bf98e8819ae9a490666a68676a736a6a646a64
//請(qǐng)假單152786還聚餐fjhgjsjjdjd
//普通字符串轉(zhuǎn)換為十六進(jìn)制的。
- (NSString *)hexStringFromString:(NSString *)string{
NSData *myD = [string dataUsingEncoding:NSUTF8StringEncoding];
Byte *bytes = (Byte *)[myD bytes];
//下面是Byte 轉(zhuǎn)換為16進(jìn)制。
NSString *hexStr=@"";
for(int i=0;i<[myD length];i++)
{
NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16進(jìn)制數(shù)
if([newHexStr length]==1)
hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];
else
hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
}
return hexStr;
}
// 十六進(jìn)制轉(zhuǎn)換為普通字符串的。
- (NSString *)stringFromHexString:(NSString *)hexString {
char *myBuffer = (char *)malloc((int)[hexString length] / 2 + 1);
bzero(myBuffer, [hexString length] / 2 + 1);
for (int i = 0; i < [hexString length] - 1; i += 2) {
unsigned int anInt;
NSString * hexCharStr = [hexString substringWithRange:NSMakeRange(i, 2)];
NSScanner * scanner = [[NSScanner alloc] initWithString:hexCharStr];
[scanner scanHexInt:&anInt];
myBuffer[i / 2] = (char)anInt;
}
NSString *unicodeString = [NSString stringWithCString:myBuffer encoding:4];
NSLog(@"------字符串=======%@",unicodeString);
return unicodeString;
}
16進(jìn)制轉(zhuǎn)NSData NSData轉(zhuǎn)16進(jìn)制
// 16進(jìn)制轉(zhuǎn)NSData
- (NSData *)convertHexStrToData:(NSString *)str
{
if (!str || [str length] == 0) {
return nil;
}
NSMutableData *hexData = [[NSMutableData alloc] initWithCapacity:20];
NSRange range;
if ([str length] % 2 == 0) {
range = NSMakeRange(0, 2);
} else {
range = NSMakeRange(0, 1);
}
for (NSInteger i = range.location; i < [str length]; i += 2) {
unsigned int anInt;
NSString *hexCharStr = [str substringWithRange:range];
NSScanner *scanner = [[NSScanner alloc] initWithString:hexCharStr];
[scanner scanHexInt:&anInt];
NSData *entity = [[NSData alloc] initWithBytes:&anInt length:1];
[hexData appendData:entity];
range.location += range.length;
range.length = 2;
}
return hexData;
}
// NSData轉(zhuǎn)16進(jìn)制 第一種
- (NSString *)convertDataToHexStr:(NSData *)data
{
if (!data || [data length] == 0) {
return @"";
}
NSMutableString *string = [[NSMutableString alloc] initWithCapacity:[data length]];
[data enumerateByteRangesUsingBlock:^(const void *bytes, NSRange byteRange, BOOL *stop) {
unsigned char *dataBytes = (unsigned char*)bytes;
for (NSInteger i = 0; i < byteRange.length; i++) {
NSString *hexStr = [NSString stringWithFormat:@"%x", (dataBytes[i]) & 0xff];
if ([hexStr length] == 2) {
[string appendString:hexStr];
} else {
[string appendFormat:@"0%@", hexStr];
}
}
}];
return string;
}
// NSData轉(zhuǎn)16進(jìn)制 第二種
-(NSString *)hexStringFormData:(NSData *)data
{
return [[[[NSString stringWithFormat:@"%@",data]
stringByReplacingOccurrencesOfString:@"<" withString:@""]
stringByReplacingOccurrencesOfString:@">" withString:@""]
stringByReplacingOccurrencesOfString:@" " withString:@""];
}
問題
- 在bejson網(wǎng)站測(cè)試的 換行的字符串 轉(zhuǎn)成的 16進(jìn)制進(jìn)制
16進(jìn)制到文本字符串的轉(zhuǎn)換
換行
在線實(shí)時(shí)轉(zhuǎn)換
用網(wǎng)站轉(zhuǎn)成
3136e8bf9be588b6e588b0e69687e69cace5ad97e7aca6e4b8b2e79a84e8bdace68da2ae68da2e8a18cae59ca8e7babfe5ae9ee697b6e8bdace68da2
用代碼 stringFromHexString不能把這個(gè)16進(jìn)制再轉(zhuǎn)回來
- 在代碼設(shè)置 \n換行 是可以識(shí)別 并轉(zhuǎn)換的
16進(jìn)制到文本字符串的轉(zhuǎn)換\n換行\(zhòng)n在線實(shí)時(shí)轉(zhuǎn)換
用代碼hexStringFromString 轉(zhuǎn)成
3136e8bf9be588b6e588b0e69687e69cace5ad97e7aca6e4b8b2e79a84e8bdace68da20ae68da2e8a18c0ae59ca8e7babfe5ae9ee697b6e8bdace68da2
用代碼stringFromHexString回轉(zhuǎn)
16進(jìn)制到文本字符串的轉(zhuǎn)換
換行
在線實(shí)時(shí)轉(zhuǎn)換
- 分析對(duì)照下
發(fā)現(xiàn)之所以轉(zhuǎn)不過來,是因?yàn)閾Q行符不一樣 a 與 0a
3136e8bf9be588b6e588b0e69687e69cace5ad97e7aca6e4b8b2e79a84e8bdace68da2
a
e68da2e8a18c
a
e59ca8e7babfe5ae9ee697b6e8bdace68da2
3136e8bf9be588b6e588b0e69687e69cace5ad97e7aca6e4b8b2e79a84e8bdace68da2
0a
e68da2e8a18c
0a
e59ca8e7babfe5ae9ee697b6e8bdace68da2
中文字符串轉(zhuǎn)NSData GBK 和 UTF-8
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSData *valData = [hextext dataUsingEncoding:enc];
待補(bǔ)充