还是那句话,没有第一时间在网上找到想要的参考代码,就自己动手做了一个。

总感觉进制转换应该有系统方法,哪位大神若知道还请不吝赐教。

//
//  MainViewController.m
//  Computer
//
//  Created by 杜子兮 on 13-12-17.
//  Copyright (c) 2013年 莲兮奈若何. All rights reserved.
//#define OX 10
#define OY 120
#define INNER 5
#define WIDTH 45
#define HEIGHT 45#import "MainViewController.h"@implementation MainViewController- (void)viewDidLoad
{[super viewDidLoad];UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, 20, 320, 50)];label.text = @" 进制转换器 ";label.textAlignment = NSTextAlignmentCenter;[self.view addSubview:label];[label release];_textField = [[UILabel alloc]initWithFrame:CGRectMake(OX, 70, 320 - OX * 2, 40)];//_textField.borderStyle = UITextBorderStyleRoundedRect;_textField.textAlignment = NSTextAlignmentRight;[_textField setBackgroundColor:[UIColor lightGrayColor]];[self.view addSubview:_textField];CGRect rect = CGRectMake(OX, OY , WIDTH, HEIGHT);//数字按键for (int i = 0; i < 16; i++) {UIButton * bt = [UIButton buttonWithType:UIButtonTypeRoundedRect];[bt setTag:i];[bt setFrame:rect];NSString * title = [[NSString alloc]init];if (i < 10) {title = [NSString stringWithFormat:@"%d",i];}else{title = [NSString stringWithFormat:@"%c",'A' + i - 10];}[bt setTitle:title forState:UIControlStateNormal];[bt.layer setMasksToBounds:YES];[bt.layer setCornerRadius:10.0]; //设置矩形四个圆角半径[bt setBackgroundColor:[UIColor orangeColor]];[bt setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];[bt addTarget:self action:@selector(numInput:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:bt];[bt release];if (((i + 1) % 5 == 0) && (i != 14)) {rect.origin.y += HEIGHT + INNER;rect.origin.x = OX;}else{rect.origin.x += WIDTH + INNER;}}//取消按键rect.origin.y -= (HEIGHT + INNER) * 2;rect.origin.x -= WIDTH + INNER;UIButton * bt = [UIButton buttonWithType:UIButtonTypeRoundedRect];[bt setTag:30];[bt setFrame:rect];[bt setTitle:@"C" forState:UIControlStateNormal];[bt.layer setMasksToBounds:YES];[bt.layer setCornerRadius:10.0]; //设置矩形四个圆角半径[bt setBackgroundColor:[UIColor blueColor]];[bt setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];[bt addTarget:self action:@selector(clean) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:bt];[bt release];rect = CGRectMake(OX + INNER, OY + (WIDTH + INNER) * 4, WIDTH * 3, HEIGHT / 1.5);//进制转换按钮int tag = 21;NSArray * btArray = [NSArray arrayWithObjects:@"二进制转十进制",@"十进制转二进制",@"二进制转十六进制",@"十六进制转二进制",@"十进制转十六进制",@"十六进制转十进制", nil];for (int i = tag; i < tag + 6; i++) {UIButton * btTurn = [UIButton buttonWithType:UIButtonTypeRoundedRect];btTurn.tag = i;btTurn.frame = rect;[btTurn setTitle:[btArray objectAtIndex:i - 21] forState:UIControlStateNormal];[btTurn.layer setMasksToBounds:YES];[btTurn.layer setCornerRadius:10.0]; //设置矩形四个圆角半径[btTurn setBackgroundColor:[UIColor darkGrayColor]];[btTurn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];[btTurn addTarget:self action:@selector(numTurn:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:btTurn];[btTurn release];if (i % 2 == 1) {rect.origin.x += (WIDTH + INNER) * 3;}else{rect.origin.y += HEIGHT / 1.5 + INNER;rect.origin.x = OX + INNER;}}}- (void)clean{_textField.text = @"";
}- (void)numTurn:(UIButton *)sender{NSLog(@"%s",__func__);NSString *str = _textField.text;if (sender.tag == 26) {       // 16 -> 10_textField.text = [self turn16to10:str];}else if (sender.tag == 21) { //  2 -> 10_textField.text = [self turn2to10:str];}else if (sender.tag == 22) { // 10 ->  2_textField.text = [self turn10to2:str];}else if (sender.tag == 25) { // 10 -> 16_textField.text = [self turn10to16:str];}else if (sender.tag == 23) { //  2 -> 16NSString *strTemp = [self turn2to10:str];_textField.text = [self turn10to16:strTemp];}else if (sender.tag == 24) { // 16 ->  2NSString *strTemp = [self turn16to10:str];NSLog(@"%@",strTemp);_textField.text = [self turn10to2:strTemp];}
}- (NSString *) turn10to16:(NSString *)str{int num = [str intValue];NSMutableString * result = [[NSMutableString alloc]init];while (num > 0) {int a = num % 16;char c;if (a > 9) {c = 'A' + (a - 10);}else{c = '0' + a;}NSString * reminder = [NSString stringWithFormat:@"%c",c];[result insertString:reminder atIndex:0];num = num / 16;}return [result autorelease];
}- (NSString *) turn10to2:(NSString *)str{int num = [str intValue];NSMutableString * result = [[NSMutableString alloc]init];while (num > 0) {NSString * reminder = [NSString stringWithFormat:@"%d",num % 2];[result insertString:reminder atIndex:0];num = num / 2;}return [result autorelease];
}- (NSString *) turn2to10:(NSString *)str{int sum = 0;for (int i = 0; i < str.length; i++) {sum *= 2;char c = [str characterAtIndex:i];sum += c - '0';}return [NSString stringWithFormat:@"%d",sum];
}- (NSString *) turn16to10:(NSString *)str{int sum = 0;for (int i = 0; i < str.length; i++) {sum *= 16;char c = [str characterAtIndex:i] ;if (c >= 'A') {sum += c - 'A' + 10;}else{sum += c - '0';}}return [NSString stringWithFormat:@"%d",sum];
}- (void)numInput:(UIButton *)sender{NSLog(@"%s",__func__);if (!_textField.text) {_textField.text = @"";}_textField.text = [NSString stringWithFormat:@"%@%@",_textField.text,sender.titleLabel.text];}@end

没有做完整的测试,只是简单试了几个数都好用。欢迎bug提出。

【iOS】二进制十进制十六进制转换器相关推荐

  1. 微型计算机有多少进制,微型计算机原理二进制十进制十六进制.doc

    微型计算机原理二进制十进制十六进制 1:微处理器和微型计算机的发展 自1946年世界上第一台计算机问世以来,计算机科学与技术得到了飞速的发展,短短50多年时间,已经经历了电子管.晶体管.集成电路.超大 ...

  2. 二进制十进制十六进制转换_二进制数制到十进制数制的转换

    二进制十进制十六进制转换 Prerequisite: Number systems 先决条件: 数字系统 To convert binary number to its respective deci ...

  3. php 十六进制变中文版,php 汉字转化成 二进制 十进制 十六进制 数目字

    php 汉字转化成 二进制 十进制 十六进制 数字 /** * 把一个汉字转为unicode的通用函数,不依赖任何库,和别的自定义函数,但有条件 * 条件:本文件以及函数的输入参数应该用utf-8编码 ...

  4. 二进制,十进制,十六进制

    生活中其实很多地方的计数方法都多少有点不同进制的影子. 比如我们最常用的10进制,其实起源于人有10个指头.如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制. 至于二进制-- ...

  5. postgreSql按位运算、二进制十进制十六进制的表法和转换

    -- postgre 按位运算符 以及结果 注释的后面为结果SELECT 1|2 ; -- 3SELECT 1&2 ; -- 0SELECT 1*2 ; -- 2SELECT 4>> ...

  6. QT 进制转换小工具 二进制/十进制/十六进制/浮点数转换

    野生小菜鸟一只,程序效果如下,希望大家多多支持. 1. 按table切换LineEdit: 2. 输入要计算的数据后,按回车执行,计算后的数据会显示在同一行的另一个控件中. 3. LIneEdit内加 ...

  7. 二进制 十进制 十六进制

     二进制 二进制有两个数值既0和1 ,在数字电路里面他们被用来表示高低电流,在网络里面它们也被用于表示IP地址,二进制表示IP地址的方法通常都是四个八位组的二进制如"00000000 000 ...

  8. java、计算机进制转换,二进制 十进制 十六进制 的进制等等!

    2进制CPU使用,8进制很少见,10进制适合人类使用,16进制适合编译器和底层程序员使用,希望对你有所帮助! 以下文章是自己从别的地方复制粘贴过来, 总结了一下. 虽然看着有点乱, 但是想学 ,就能看 ...

  9. java 进制转换,二进制 十进制 十六进制 正数 负数的进制等等!

    2进制CPU使用,8进制很少见,10进制适合人类使用,16进制适合编译器和底层程序员使用,希望对你有所帮助! 以下文章是自己从别的地方复制粘贴过来, 总结了一下. 虽然看着有点乱, 但是想学 ,就能看 ...

最新文章

  1. 【青少年编程(第31周)】一个有趣又有料的抖音号!
  2. Access中复制表
  3. centos7安装Metricbeat7.6.0采集nginx指标
  4. 干货 | 仅需10分钟,开启你的机器学习之路!
  5. PYTHON之路DAY3
  6. .NET 5 开源工作流框架elsa技术研究
  7. 近期两篇双目图像超分辨算法论文解读 |AAAI2020 SPL2020
  8. Spring Boot(5)---常用注解总结
  9. makefile中的wildcard
  10. typescript step by step interface class
  11. atitit 面试问题表 侧重于项目和业务描述方面.v2 良好的标准:: 1.回答问题比较流畅,较少出现停顿现象,较少犹豫 2.回答有条理清晰 不杂乱 3.回答较为丰富内容 4.精神状态紧张
  12. vmware服务器系统配置ip地址,教程 - Vmware ESXi IP地址配置
  13. 未来计算机作文想象,想象未来作文450字
  14. PSF 点扩展函数 (from WikiPedia)
  15. Could not resolve dependencies for project
  16. padavan手动安装php
  17. python简单代码画皮卡丘-利用Python绘制萌萌哒的皮卡丘
  18. 实现数字手写图片识别(纯代码)
  19. LiteOS学习笔记-9LiteOS SDK oc流程之MQTT
  20. 为什么安装了python桌面没有图标怎嘛办_python在程序中没有找到图标

热门文章

  1. js中字符串数字转换为数值类型
  2. 我作为大学生刚出校园实习的感受
  3. stm32波特率配置
  4. docker容器时间错误解决方案
  5. 【Android】你可能还不知道的elevation、以及Z值等
  6. Codeforces Round #768 (Div. 1)(A-C)
  7. 计算机换系统后word丢失怎么办,Word文件丢失如何找回?教你解决文件丢失的难题...
  8. linux启动和关闭防火墙命令
  9. 达人评测 华为matebook16对比联想小新pro16锐龙版 2021哪个好
  10. c语言学习,使用文档来查找学习库函数