进制转换

1.十进制转二进制

2.二进制转十进制

3.十进制转十六进制

4.十六进制转十进制

5.二进制转十六进制

6.十六进制转二进制

//  十进制转二进制

+(NSString*)toBinarySystemWithDecimalSystem:(NSString*)decimal

{

intnum=[decimal intValue];

intremainder=0;//余数

intdivisor=0;//除数

NSString*prepare=@"";

while(true)

{

remainder=num%2;

divisor=num/2;

num=divisor;

prepare=[prepare stringByAppendingFormat:@"%d",remainder];

if(divisor==0)

{

break;

}

}

NSString*result=@"";

for(inti=prepare.length-1;i>=0;i--)

{

result=[result stringByAppendingFormat:@"%@",

[prepare substringWithRange:NSMakeRange(i,1)]];

}

returnresult;

}

//  二进制转十进制

+(NSString*)toDecimalSystemWithBinarySystem:(NSString*)binary

{

intll=0;

inttemp=0;

for(inti=0;i

{

temp=[[binary substringWithRange:NSMakeRange(i,1)]intValue];

temp=temp*powf(2,binary.length-i-1);

ll+=temp;

}

NSString*result=[NSStringstringWithFormat:@"%d",ll];

returnresult;

}

//十进制转十六进制

NSString *hexString = [NSString stringWithFormat:@"%@",[[NSString alloc] initWithFormat:@"%1x",整形参数]];

//十六进制转十进制

UInt64 mac1 =  strtoul([@"abcd1234" UTF8String], 0, 16);

//如果在有溢出,使用下面方法:

unsigned long long result = 0;

NSScanner *scanner = [NSScanner scannerWithString:@"abcd12345678"];

[scanner scanHexLongLong:&result];

//十六进制转二进制

-(NSString *)getBinaryByhex:(NSString *)hex

{

NSMutableDictionary  *hexDic = [[NSMutableDictionary alloc] init];

hexDic = [[NSMutableDictionary alloc] initWithCapacity:16];

[hexDic setObject:@"0000" forKey:@"0"];

[hexDic setObject:@"0001" forKey:@"1"];

[hexDic setObject:@"0010" forKey:@"2"];

[hexDic setObject:@"0011" forKey:@"3"];

[hexDic setObject:@"0100" forKey:@"4"];

[hexDic setObject:@"0101" forKey:@"5"];

[hexDic setObject:@"0110" forKey:@"6"];

[hexDic setObject:@"0111" forKey:@"7"];

[hexDic setObject:@"1000" forKey:@"8"];

[hexDic setObject:@"1001" forKey:@"9"];

[hexDic setObject:@"1010" forKey:@"A"];

[hexDic setObject:@"1011" forKey:@"B"];

[hexDic setObject:@"1100" forKey:@"C"];

[hexDic setObject:@"1101" forKey:@"D"];

[hexDic setObject:@"1110" forKey:@"E"];

[hexDic setObject:@"1111" forKey:@"F"];

NSMutableString *binaryString=[[NSMutableString alloc] init];

for (int i=0; i<[hex length]; i++) {

NSRange rage;

rage.length = 1;

rage.location = i;

NSString *key = [hex substringWithRange:rage];

//NSLog(@"%@",[NSString stringWithFormat:@"%@",[hexDic objectForKey:key]]);

binaryString = [NSString stringWithFormat:@"%@%@",binaryString,[NSString stringWithFormat:@"%@",[hexDic objectForKey:key]]];

}

//NSLog(@"转化后的二进制为:%@",binaryString);

return binaryString;

}

//二进制转十六进制

- (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;}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容