您的位置:首页 > 移动开发 > IOS开发

iOS Socket 打字节流相关

2016-05-06 15:27 344 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: