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 可选项.指定将数字值转换为字符串时的进制. 例如 ...
随机推荐
- Effective Java 阅读笔记——并发
66:同步访问共享的可变数据 synchronized:1互斥,阻止线程看到的对象处于不一致的状态:2保证线程在进入同步区时能看到变量的被各个线程的所有修改 Java中,除了long或者double, ...
- Android线程管理(二)——ActivityThread
线程通信.ActivityThread及Thread类是理解Android线程管理的关键. 线程,作为CPU调度资源的基本单位,在Android等针对嵌入式设备的操作系统中,有着非常重要和基础的作用. ...
- iOS-协议与代理<转>
代理,又称委托代理(delegate),是iOS中常用的设计一种模式.顾名思义,它是把某个对象要做的事情委托给别的对象去做.那么别的对象就是这个对象的代理,代替它来打理要做的事.反映到程序中, 首先要 ...
- windows log 打印语句
1.格式化字符串(Writes formatted data to the specified string) wchar_t szMessage[260]; PWSTR pszFunction = ...
- HashMap总结
最近朋友推荐的一个很好的工作,又是面了2轮没通过,已经是好几次朋友内推没过了,觉得挺对不住朋友的.面试反馈有一方面是有些方面理解思考的还不够,平时也是项目进度比较紧,有些方面赶进度时没有理解清楚的后面 ...
- python操作db2和mysql ,ibm_db
我需要提取mysql和db2的数据进行对比,所以需要用python对其都进行操作. python对mysql进行操作应该没什么问题,就是安装drive后就可以了,在上一篇中有讲安装python-mys ...
- (ios实战) UINavigationBar 返回按钮 文本自定义实现
在实际开发过程, 我们使用navigationController时,上一个标题过长,导致下一个界面的返回按钮文本过长,比较难看,如果标题取名过短,又不能完全表达含义. 下面时如何实现返回按钮的Tit ...
- Windows环境下maven 安装与环境变量配置
Maven是一个项目管理的Java 工具,在JavaEE中,我们可以使用Maven方便地管理团队合作的项目,现在我们在学习JavaEE框架,使用Maven可以管理类库,有效方便地供团队中的其他人员使用 ...
- sql 查询基本语法
1.计算列 select * from emp --*表示所有的 --from emp 表示从emp表查询 select empno,enam ...
- quick sort java version
import java.util.Random; public class test { public static void main(String[] args) { int[] arr= gen ...