Swift3.0 进制转换
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 进制转换的更多相关文章
- 【Java】7.0 进制转换
[二进制转十进制] public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.p ...
- C++笔记(7)——一些模拟题:简单模拟、查找元素、图形输出、日期处理、进制转换、字符串处理
以下内容基本来自<算法笔记>,作者为胡凡,建议直接买书看,我这里只是摘抄部分当笔记,不完整的. 简单模拟 就是一类"题目怎么说你就怎么做"的题目.这类题目不涉及算法,只 ...
- JS 进制转换的理解
该事情的由来是来自于一个面试题,题目是这样的,[1,2,3].map(parseInt)的结果是什么? 作为菜鸟的我们一定是觉得分别把1,2,3分别交给parseInt,无非就是1,2,3嘛.其实结果 ...
- SQL Server 进制转换函数
一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...
- [No000071]C# 进制转换(二进制、十六进制、十进制互转)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- JS中的进制转换以及作用
js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: //10进制转为16进制 ().toString() // =>&q ...
- 结合stack数据结构,实现不同进制转换的算法
#!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...
- 进制转换( C++字符数组 )
注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数 ...
- JS 进制转换
十进制转换成其他进制 objectname.toString([radix]) objectname 必选项.要得到字符串表示的对象. radix 可选项.指定将数字值转换为字符串时的进制. 例如 ...
随机推荐
- HillStone上网认证客户端
公司上网认证服务器从原来网康变更成山石(HillStone),原来网康是有认证客户端的,运行在系统托盘区,现在的Hillstone是通过网页页面认证的,要上网,这个认证页面就需要一直打开在那里.碰到异 ...
- 认识Runtime1
认识Runtime1 什么是id? id在objc.h中的定义如下: typedef struct objc_object *id; 那么什么是objc_object呢? objc_object在ob ...
- 基础学习day12--多线程一线程之间的通信和常用方法
一.线程之间的通信 1.1.线程之间的通信方法 多个线程在处理统一资源,但是任务却不同,这时候就需要线程间通信. 等待/唤醒机制涉及的方法: 1. wait():让线程处于冻结状态,被wa ...
- IOS Quartz2D简介
Quartz2D 简介( 后续会有相关应用) 第一部分 绘制直线 代码示例: - (void)drawRect:(CGRect)rect{ //获取图形上下文 CGContextRef cxConte ...
- 深入理解java虚拟机(4)---类加载机制
类加载的过程包括: 加载class到内存,数据校验,转换和解析,初始化,使用using和卸载unloading过程. 除了解析阶段,其他过程的顺序是固定的.解析可以放在初始化之后,目的就是为了支持动态 ...
- MongoDB学习笔记——文档操作之查询
查询文档 使用db.COLLECTION_NAME.findOne()可以查询所有满足条件的第一条数据 预发格式如下: db.COLLECTION_NAME.findOne(<query> ...
- 关于Redis中的字符串对象
一.SDS redis中定义Object types有5种 /* Object types */ #define REDIS_STRING 0 #define REDIS_LIST 1 #define ...
- 标准sql语句,学习
标准SQL语句总结标准SQL语句总结,标准SQL语言基本上适用于下面所列出的数据库软件 -------------------------------------------------------- ...
- Google Guava之--cache
一.简介 Google Guava包含了Google的Java项目许多依赖的库,如:集合 [collections] .缓存 [caching] .原生类型支持 [primitives support ...
- [测试] 试用Hadoop 2.2中的HDFS NFS
Hadoop 2.2中正式启用了hdfs nfs功能,使得hdfs的通用性迈进了一大步.在公司让小朋友搭建了一下,然后我自己进行了一点简单的试验,有一点收获,记录在此. 理论 使用hdfs nfs功能 ...