IOS 验证码

摘要:
将十六进制字符串转换为最近写入的UIImage项返回的字节数组的十六进制字符串。这样,您需要先将十六进制字符串转换为字节数组,最重要的是如何将十六进制串转换为字节阵列。这将十六进制字符串与字节数组相关联。总之,1字节=8位=8个二进制数字=2个十六进制数字。由于接口是从字节数据生成的十六进制字符串,因此接口返回的字符串必须是可以除以2的字符串。
将十六进制的字符串转化为UIImage

    最近写一个项目,有验证码,但是接口返回的并不是验证码图片的URL,而是返回的字节数组16进制字符串。这样就需要把16进制字符串首先字节数组,其次再把字节数组转化为NSData,最后再把NSData转化为UIImage。其中最重要的是如何把16进制的字符串转换为字节数组。首先要把字节数组和16进制关联起来。1字节(byte)就是8个位(bit)。一个位就代表一个0或1(即二进制) 。4个二进制数组成一个十六进制数。这样就把16进制的字符串和字节数组关联起来了。总结出来就是1个字节(byte) = 8位(bit) = 8位二进制数 = 2位十六进制数。由于接口是通过字节数据生成的16进制字符串所以接口返回的字符串必须是能被2整除的字符串,想清楚这些再看代码就容易的多了。

下面是核心代码:

复制代码
/// 将十六进制的字符串转化为NSData
- (NSData *)transStrHexToData:(NSString *)strHex
{
    /// bytes索引
    NSUInteger j = 0;
    
    NSInteger len = strHex.length;
    
    if (len % 2 == 1) {
        /// 若不能被2整除则说明16进制的字符串不满足图片图。特此说明,假如只是单纯的把十六进制转换为NSData就把这个if干掉即可,
        return nil;
    }
    
    /// 动态分配内存
    Byte *bytes = (Byte *)malloc((len / 2 + 1) * sizeof(Byte));
    
    /// 初始化内存 其中memset的作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法
    memset(bytes, '

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Dubbo 2.7 安装spark集群搭建下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android清除本地数据缓存代码

Android清除本地数据缓存代码案例 直接上代码: /* * 文 件 名: DataCleanManager.java * 描 述: 主要功能有清除内/外缓存,清除数据库,清除sharedPreference,清除files和清除自定义目录 */ package com.test.DataClean; import java.io.File; impor...

javascript 九宫格图片随机打乱位置

  今天就做个九宫格的简易拼图,最让我头疼的就是点击开始打乱图片位置。一开始在百度查看相关博客,走了很多弯路。最后看了众多的例子,自己写了个方法。 1 <script> 2 //打乱图片方法 3 function fun(){ 4 var x = []; 5 var y ; 6...

高清摄像头MIPI CSI2接口浅解【转】

本文转载自:http://blog.csdn.net/u012075739/article/details/44672435 MIPI摄像头常见于手机、平板中,支持500万像素以上高清分辨率。它的全称为“MobileIndustryProcessorInterface”,分为MIPIDSI和MIPICSI,分别对应于视频显示和视频输入标准。目前,MIPI摄...

[Android进阶]Binder学习(初始篇)

Android中Binder学习(初始篇) 本篇博客学习自侯亮的博客。地址为: 红茶一杯话Binder 1 什么是Binder? 简单地说。Binder是Android平台上的一种跨进程交互技术。 该技术最早并非由Google公司提出的,它的前身是Be Inc公司开发的OpenBinder,并且在Palm中也有应用。后来OpenBinder的作者Di...

小程序之模板消息

使用模板消息 获取模板 id 登录https://mp.weixin.qq.com获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用,详见模板审核说明 页面的 <form/> 组件,属性report-submit为true时,可以声明为需发模板消息,此时点击按钮提交表单可以获取formId,用于发送模板消息。或者当用户完成支...

shiro中用redis做session缓存

shiro中的cache和spring类似,有提供两个接口,使用者使用不同的实现来继承他们:   1.cache-实际进行缓存操作,如使用spring-data-redis操作   2.cacheManager-管理cahe实例,返回cache实例   3.SessionDAO-调用cache进行操作 项目中,我用的securityManager是Defa...