#import "NSString+Socket808Transition.h"
@implementation NSString (Socket808Transition)
/**
* 字符串转字节流
*
* @param hanzi <#hanzi description#>
*
* @return <#return value description#>
*/
-(NSMutableData *)NSStringToNSDataByte
{
NSMutableData* data = [NSMutableData data];
int idx;
for (idx = 0; idx+2 <= self.length; idx+=2)
{
NSRange range = NSMakeRange(idx, 2);
NSString* hexStr = [self substringWithRange:range];
NSScanner* scanner = [NSScanner scannerWithString:hexStr];
unsigned int intValue;
[scanner scanHexInt:&intValue];
[data appendBytes:&intValue length:1];
}
return data;
}
/**
* 整数转16进制
*
*
* @return <#return value description#>
*/
-(NSString *)ToHex
{
NSString *nLetterValue;
NSString *str =@"";
long long int tmpid=[self intValue];
long long int ttmpig;
for (int i = 0; i<9; i++) {
ttmpig=tmpid%16;
tmpid=tmpid/16;
switch (ttmpig)
{
case 10:
nLetterValue =@"A";break;
case 11:
nLetterValue =@"B";break;
case 12:
nLetterValue =@"C";break;
case 13:
nLetterValue =@"D";break;
case 14:
nLetterValue =@"E";break;
case 15:
nLetterValue =@"F";break;
default:nLetterValue=[[NSString alloc]initWithFormat:@"%lli",ttmpig];
}
str = [nLetterValue stringByAppendingString:str];
if (tmpid == 0) {
break;
}
}
if([str length]%2>0)
{
str=[NSString stringWithFormat:@"0%@",str];
}
return str;
}
/**
* 汉字字符串转GBKStirng
*
* @return <#return value description#>
*/
-(NSMutableData *)HanziToGBKNSDataByte
{
NSMutableData* mutabledata = [NSMutableData data];
for (int i=0; i<[self length]; i++)
{
NSRange range=NSMakeRange(i, 1);
NSString *substring=[self substringWithRange:range];
const char *cChar=[substring UTF8String];
if(strlen(cChar)==3)
{
[mutabledata appendData:[[substring EncodeGB2312Str] NSStringToNSDataByte]];
}
else
{
[mutabledata appendBytes:cChar length:1];
}
}
return mutabledata ;//[GBKString NSStringToNSDataByte];
}
/**
* Utf8 转GB2312
*/
-(NSString *)EncodeGB2312Str
{
CFStringRef nonAlphaNumValidChars = CFSTR("![ DISCUZ_CODE_1 ]’()*+,-./:;=?@_~");
NSString *preprocessedString = (NSString *)CFBridgingRelease(CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, (CFStringRef)self, CFSTR(""), kCFStringEncodingGB_18030_2000));
NSString *newStr = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)preprocessedString,NULL,nonAlphaNumValidChars,kCFStringEncodingGB_18030_2000)) ;
newStr=[newStr stringByReplacingOccurrencesOfString:@"%" withString:@""];
return newStr;
}