Swift3.0 进制转换

  模块可以直接使用,写的不是很好,欢迎来喷

// Data -> HexStrings

func dataToHexStringArrayWithData(data: NSData) -> [String] {

let byteArray:[Int] = DataToIntWithData(data: data)

var byteStrings: [String] = []

for (_,value) in byteArray.enumerated() {

byteStrings.append(ToHex(tmpid: value))

}

return byteStrings

}

// HexString -> Data

func hexToBytes(bytesStr: String) -> Data? {

var data = Data(capacity: bytesStr.characters.count / 2)

let regex = try! NSRegularExpression(pattern: "[0-9a-f]{1,2}", options: .caseInsensitive)

regex.enumerateMatches(in: bytesStr, options: [], range: NSMakeRange(0, bytesStr.characters.count)) { match, flags, stop in

let byteString = (bytesStr as NSString).substring(with: match!.range)

var num = UInt8(byteString, radix: 16)!

data.append(&num, count: 1)

}

guard data.count > 0 else {

return nil

}

return data

}

// Data -> 10

func DataToIntWithData(data: NSData) -> [Int] {

var byteArray:[Int] = []

for i in 0..<data.length {

var temp:Int = 0

data.getBytes(&temp, range: NSRange(location: i,length:1 ))

byteArray.append(temp)

}

return byteArray

}

// 10 -> 16

func ToHex(tmpid: Int) -> String {

let leftInt: Int  = tmpid / 16

let rightInt: Int = tmpid % 16

var leftIndex: String = ""

var rightIndex: String = ""

let numberArray = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]

for i in 0..<numberArray.count {

if i == leftInt {

leftIndex = numberArray[i]

}

if i == rightInt {

rightIndex = numberArray[i]

}

}

return "\(leftIndex)\(rightIndex)"

}

// 16 -> 10

func ToInt(hexString: String) -> Int {

var _hexString = hexString

// 转小写

_hexString = _hexString.lowercased()

// 拆分字符串 转成10进制 计算

var term = 0

let intArray = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];

let _hex = NSString(string: _hexString)

let left = String(format: "%c", _hex.character(at: 0))

let right = String(format: "%c", _hex.character(at: 1))

var leftValue = 0

var rightValue = 0

for (index,value) in intArray.enumerated() {

if left == value {

leftValue = index

}

if right == value {

rightValue = index

}

}

term = leftValue * 16 + rightValue

return term;

}

-----------------这里是分割线,后续更新---------------------------------

Swift3.0 进制转换的更多相关文章

  1. 【Java】7.0 进制转换

    [二进制转十进制] public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.p ...

  2. C++笔记(7)——一些模拟题:简单模拟、查找元素、图形输出、日期处理、进制转换、字符串处理

    以下内容基本来自<算法笔记>,作者为胡凡,建议直接买书看,我这里只是摘抄部分当笔记,不完整的. 简单模拟 就是一类"题目怎么说你就怎么做"的题目.这类题目不涉及算法,只 ...

  3. JS 进制转换的理解

    该事情的由来是来自于一个面试题,题目是这样的,[1,2,3].map(parseInt)的结果是什么? 作为菜鸟的我们一定是觉得分别把1,2,3分别交给parseInt,无非就是1,2,3嘛.其实结果 ...

  4. SQL Server 进制转换函数

    一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...

  5. [No000071]C# 进制转换(二进制、十六进制、十进制互转)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. JS中的进制转换以及作用

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: //10进制转为16进制 ().toString() // =>&q ...

  7. 结合stack数据结构,实现不同进制转换的算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...

  8. 进制转换( C++字符数组 )

    注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数 ...

  9. JS 进制转换

    十进制转换成其他进制 objectname.toString([radix])   objectname 必选项.要得到字符串表示的对象. radix 可选项.指定将数字值转换为字符串时的进制. 例如 ...

随机推荐

  1. MacBook Air 使用技巧

    1.Finder             相当于资源管理器 Launchpad       相当于桌面 Safari              浏览器 2.快捷键 * cmd+shift+3: 捕获整 ...

  2. C语言可变参数函数实现原理

    一.可变参数函数实现原理 C函数调用的栈结构: 可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈. 本 ...

  3. IOS 实现 AAC格式 录音 录音后自动播放

    废话不说了 不知道aac可以百度一下 下面直接上代码,一个h文件 一个m文件 搞定! #import <AVFoundation/AVFoundation.h> #import <U ...

  4. 【读书笔记】iOS-GCD-block

    一,block的定义 //申明变量 (void)(^PrintStr)(void); //定义 PrintStr=^{ NSLog(@"PrintStr"); }; //调用 Pr ...

  5. Maven学习——安装与修改Maven的本地仓库路径

    一.Maven的下载安装配置 1.1.下载 官网 http://maven.apache.org/download.cgi 1.2.安装配置 apache-maven-3.3.3-bin.zip 解压 ...

  6. 【iOS开发】UIWebView与JavaScript(JS) 回调交互

    ------------------------------------------------- 很多关于objc 与 js 交互的文章都比较适用于 mac开发,iOS的webview 还是有所不一 ...

  7. mac os x使用Git简易入门教程

    具体如下: 1, 首先要了解什么是Git. 简而言之,Git是一个分布式的代码版本管理工具.类似的常用工具还有SVN,CVS. 概念了解参见:http://baike.baidu.com/subvie ...

  8. docker入门(1) Centos 7 下docker的安装

    centos 7安装docker 什么是 Docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go ...

  9. [转载] 数据测试常用的Data Profiling方法

    现在对数据质量的要求越来越高,面对一个动辄上亿条数据的报表如何快速对它的数据质量做出分析呢?给大家分享下我们测试时用到的Data Profiling方法. Data Profiling,可以大概翻译“ ...

  10. 50个jquery代码片段(转)

    本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助 ...