iOS Socket 打字节流相关

#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;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值