iOS进制转换

最近要搞跟单片机通讯要很多进制转换的。留作纪念
二进制转10进制NSSing *strZone=@"1000111000111";

int zoneHour=0;
//2进制转10进制
    for (int i=strZone.length-1; i>=0; i--)
    {
NSString *a=[strZone substringWithRange:NSMakeRange(i,1)];

        zoneHour+=[a intValue]*pow(2, strZone.length-1-i);
        NSLog(@"a=%@ zoneHour=%d dd=%d hh=%1f",a,zoneHour,strZone.length-1-i,pow(2, strZone.length-1-i));
    }

10进制转2进制
-(NSString *)toBinary:(NSInteger)input
{
    if (input == 1 || input == 0) {
        return [NSString stringWithFormat:@"%d", input];
    }
    else {
        return [NSString stringWithFormat:@"%@%d", [self toBinary:input / 2], input % 2];
    }


10进制转16进制
int b=  122;
            NSData* data = [NSData dataWithBytes:&a length:1]; 
            [timeData appendData:data];


 int a = 20;
    NSString* str = [NSString stringWithFormat:@"0x%x", a];
    NSData* data = [NSData dataWithBytes:[str UTF8String] length:strlen([str UTF8String])]; 


16 进制转2进制

NSString *str = @"Af01";
NSMutableString *binStr = [[NSMutableString alloc] init];


for(NSUInteger i=0; i<[str length]; i++)
{
    [binStr appendString:[self hexToBinary:[str characterAtIndex:i]]];
}
NSLog(@"Bin: %@", binStr);
- (NSString *) hexToBinary:(unichar)myChar
{
    switch(myChar)
    {
        case '0': return @"0000";
        case '1': return @"0001";
        case '2': return @"0010";
        case '3': return @"0011";
        case '4': return @"0100";
        case '5': return @"0101";
        case '6': return @"0110";
        case '7': return @"0111";
        case '8': return @"1000";
        case '9': return @"1001";
        case 'a':
        case 'A': return @"1010";
        case 'b':
        case 'B': return @"1011";
        case 'c':
        case 'C': return @"1100";
        case 'd':
        case 'D': return @"1101";
        case 'e':
        case 'E': return @"1110";
        case 'f':
        case 'F': return @"1111";
    }
return @"-1"; //means something went wrong, shouldn't reach here!
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值