iOS 对字符串压缩

iOS小技能:base64字符串和图片的互转 前言 之前的同事 误认为二维码是app侧自己生成,直接将base64字符串 作为二维码的内容去生成,一张二维码容不下这么长的内容。就生成失败了。其实只要直接将base64字符串转图片。 initQRCodeForInputByteSize cannot find proper rs block info (input data too big?) code 将base64字符串转为图片 /*..................... 阅读详情


一般都是对文件进行压缩的,这里的代码是对字符串进行压缩和解压缩

压缩字符串


- (NSData *)gzipDeflate:(NSString*)str
{
    NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];
    if ([data length] == 0) return data;
    
    z_stream strm;
    
    strm.zalloc = Z_NULL;
    strm.zfree = Z_NULL;
    strm.opaque = Z_NULL;
    strm.total_out = 0;
    strm.next_in=(Bytef *)[data bytes];
    strm.avail_in = [data length];
    
    // Compresssion Levels:
    //   Z_NO_COMPRESSION
    //   Z_BEST_SPEED
    //   Z_BEST_COMPRESSION
    //   Z_DEFAULT_COMPRESSION
    
    if (deflateInit2(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, (15+16), 8, Z_DEFAULT_STRATEGY) != Z_OK) return nil;
    
    NSMutableData *compressed = [NSMutableData dataWithLength:16384];  // 16K chunks for expansion
    
    do {
        
        if (strm.total_out >= [compressed length])
            [compressed increaseLengthBy: 16384];
        
        strm.next_out = [compressed mutableBytes] + strm.total_out;
        strm.avail_out = [compressed length] - strm.total_out;
        
        deflate(&strm, Z_FINISH);
        
    } while (strm.avail_out == 0);
    
    deflateEnd(&strm);
    
    [compressed setLength: strm.total_out];
    return [NSData dataWithData:compressed];
}


解压缩


- (NSData *)gzipInflate:(NSData*)data
{
    if ([data length] == 0) return data;
    
    unsigned full_length = [data length];
    unsigned half_length = [data length] / 2;
    
    NSMutableData *decompressed = [NSMutableData dataWithLength: full_length + half_length];
    BOOL done = NO;
    int status;
    
    z_stream strm;
    strm.next_in = (Bytef *)[data bytes];
    strm.avail_in = [data length];
    strm.total_out = 0;
    strm.zalloc = Z_NULL;
    strm.zfree = Z_NULL;
    
    if (inflateInit2(&strm, (15+32)) != Z_OK)
        return nil;
    
    while (!done)
    {
        // Make sure we have enough room and reset the lengths.
        if (strm.total_out >= [decompressed length])
            [decompressed increaseLengthBy: half_length];
        strm.next_out = [decompressed mutableBytes] + strm.total_out;
        strm.avail_out = [decompressed length] - strm.total_out;
        
        // Inflate another chunk.
        status = inflate (&strm, Z_SYNC_FLUSH);
        if (status == Z_STREAM_END)
            done = YES;
        else if (status != Z_OK)
            break;
    }
    if (inflateEnd (&strm) != Z_OK)
        return nil;
    
    // Set real length.
    if (done)
    {
        [decompressed setLength: strm.total_out];
        return [NSData dataWithData: decompressed];
    }
    else return nil;
}




iOS gzip压缩数据 使用改方法需要倒入asi框架,一个简单的gzip数据压缩工具类 立即下载

相关推荐

字符串解压缩

字符串解压缩,使用见http://blog.youkuaiyun.com/qqmcy/article/details/25283837

压缩字符串

给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始。对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追加到 s 中。 否则,需要向 s 追加字符,后跟这一组的长度。 压缩后得到的字符串 s 不应该直接返回 ,需要转储到字符数组 chars 中。需要注意的是,如果组长度为 10 或 10 以上,则在 chars 数组中会被拆分为多个字符。 请在 修改完输入数组后 ,返回该数组的新长度。 你必须设计并实现一个只使用常量额外空间的算法来解决此问题.

Protinx的博客 789

ios-富文本处理字符串.zip

指定字符串中特定字符串字体颜色和大小,指定字符串中后n位字符串字体大小和颜色,富文本处理

ios 字符串压缩

实现对字符串进行压缩解压操作 前提需要导入libz.1.2.5.dylib 库 #import "BYViewController.h" #import "zipAndUnzip.h" @interface BYViewController () @end @implementation BYViewController - (void)viewDidLoad { [super vie...

cola_wh的博客 627

计算机三级考试嵌入式系统重点精简汇总

第一章 嵌入式系统概论 1.1.1嵌入式系统 (1)特点:(1)专用性;(2)隐蔽性;(3)资源受限;(4)高可靠性;(5)实时性;(6)软件固化。 (2)应用:(1)冰箱、洗衣机、电饭煲、空调、摄影机、DVD播放器等;(2)数控机床、飞机、汽车、电梯、X光机、血压计等;(3)电话机、传真机、打印机、pos机、GPS导航仪、路由器等。 1.1.2嵌入式系统组成与分类 (1)逻辑组成:硬件和软件,分为处理器、存储器、I|0设备与I|O接口,数据总线; (2)处理器:分为主处理器(CPU)和协处

chemkrik的博客 1万+

Python爬虫实战:绕过B站-352风控的完整解决方案

网络爬虫技术是数据采集和自动化测试的重要工具,其核心原理是通过模拟HTTP请求获取网页数据。在实践过程中,开发者常会遇到网站反爬机制,这涉及请求指纹识别、IP行为分析等安全技术。这些风控措施的价值在于保护网站数据安全和服务器资源,广泛应用于电商、社交、内容平台等场景。针对B站等平台的-352风控错误,需要综合运用请求头伪装、会话管理、参数签名破解等技术方案。本文重点探讨如何通过构建完整的浏览器级请求头、管理Cookie会话、以及使用Playwright等浏览器自动化工具,有效解决Python爬虫在B站数据采

weixin_33912638的博客 391

ios gzip 压缩字符串

1. #import "zlib.h" 2. libz.1.2.5.tbd 3. - (NSData *)gzipDeflate:(NSString*)str {     NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];     if ([data length] == 0) return data;

yangzm的专栏 2177

总结目前开源的视频生成/视频编辑大模型

随着Sora的爆火,视频生成和视频编辑受到了越来越多的关注。这篇博客总结一下目前开源的视频生成和视频编辑的大模型,并分析他们各自的优缺点,以及在自己进行科研任务或者工作中应该如何选用对应的开源模型,希望能给从事这一领域研究和使用的小伙伴们帮助。

沉迷单车的追风少年 3542

IOS学习之压缩和解压工具使用

文件压缩和解压方法: //ZLib压缩 + (NSData *)zlibCompressData:(NSData *)sourceData {          NSUInteger sourceDataLength = [sourceData length];          if (sourceDataLength == 0) {         return sourceDa

南北雪树的专栏 1234

OTFS 消息传递算法信号检测【附matlab代码详解】

OTFS 消息传递算法方面的一些浅浅理解。

Cuby的博客 4011

AI Agent开发大全第二十课-如何开发一个MCP(从0开发一个MCP Server)

大模型的MCP火了,可是无论是Claude官网本身自带Sample还是全网任何一本教程没有一个可以真正应用在生产环境中的。要么就是只能在本地以文件IO流的方式运行要么干脆连编译都出错,真正的mcp server和client是怎么编写的?如何运行在分布式环境?本教程就带大家真正从0开始以“AI计算食物热量“为例带大家真正学习mcp开发的全过程。

打造全国最全的AI Agent开发知识领域的博客 1802

IOS 压缩与解压字符串(文件) 操作

实现对字符串进行压缩解压操作 #import "BYViewController.h" #import "zipAndUnzip.h" @interface BYViewController () @end @implementation BYViewController - (void)viewDidLoad { [super viewDidLoad]; NSStrin

笑看风云的专栏 6672

华为OD机试 - 机器人活动区域(Java 双机位C卷 200分)

现有一个机器人,可放置于 M × N的网格中任意位置,每个网格包含一个非负整数编号。之后M行表示网格数值,每行N个数值(数值大小用k表示),数值间用单个空格分隔,行首行尾无多余空格。说明:图中绿色区域,相邻网格差值绝对值都小于等于1,且为最大区域,对应网格点数目为6。M、N、k均为整数,且1

学Java,找哪吒 916

iOS LeetCode ☞ 压缩字符串

给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始。对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追加到 s 中。 否则,需要向 s 追加字符,后跟这一组的长度。 压缩后得到的字符串 s 不应该直接返回 ,需要转储到字符数组 chars 中。需要注意的是,如果组长度为 10 或 10 以上,则在 chars 数组中会被拆分为多个字符。 请在 修改完输入数组后 ,返回该数组的新长度。 你必须设计并实现一个只使用常量额外空间的算法来解决此问题。 示

HumorousGhost 674

Trae辅助开发完全教程:从入门到企业级实战

《Trae AI IDE完全教程》系统介绍了这款AI驱动的下一代集成开发环境。教程从基础入门到实战应用,详细讲解了Trae的双重开发模式(IDE/SOLO)、智能编程助手CUE、行内对话、模型管理等核心功能。内容包括环境配置、项目创建、Python开发示例,以及RPC框架和iOS应用两个实战案例。Trae通过深度整合AI技术,显著提升编码效率,支持多种编程语言和主流模型,适合从新手到企业级开发者的不同需求。本教程帮助开发者快速掌握Trae的使用技巧,实现AI辅助下的高效编程。

MrLi的博客 764

Linux内核4.14版本——drm框架分析(1)——drm简介

本文介绍了DRM架构的发展历史、驱动框架以及简单示例,旨在帮助读者了解DRM架构的形成、功能流程实现。

phmatthaus的专栏 2556

GZip+Base64压缩字符串在ios上解压报错问题解决(安卓、PC模拟器正常)

在Java中,使用java.util.zip.GZIPOutputStream和sun.misc.BASE64Encoder进行字符串压缩时,发现压缩后的Base64编码结果长度不是4的整数倍,导致在iOS端解压时出现错误。经过排查,发现sun.misc.BASE64Encoder存在兼容性问题。解决方案是改用java.util.Base64进行编码,确保生成的Base64字符串长度符合要求。修改后的代码使用Base64.getEncoder().encodeToString()进行编码,解决了iOS端的解

HumorChen的博客 530

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java ios压缩,iOS中的GZIP压缩

项目中有个需求要上传用户的很多信息,考虑到接口响应速度后端同学提出了要对数据进行GZIP压缩。关于iOS端的GZIP压缩,这是我目前在github上找到的star数最多的一个。GZIP github地址。手动导入的时候,记得在Targets--Build Phases--Link Binary With Libraries中添加libz.1.2.5.tbd。接下来我们来看看GZIP到底能压缩多少。...

weixin_36255718的博客 498

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

iOS 字符串转码+解压

最近遇到这样的一个问题,从服务器上返回的字符串是经过ya

杜甲同学的专栏 3691

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

关于HBuilder 拍照 ios获取异常问题

直接进入主题:HBuilder 打包APP,压缩上传图片的时候,IOS端会获取不到压缩后的Base64 字符串 搜索了各种资料,解决方案如下:(reader.readAsDataURL(e.target.replace('file://','')); 很关键) plus.zip.compressImage({ src: imgPath, dst: "_doc/a.jpg", overwrite: true, width: '70.

u012420268的博客 455

js压缩图片的方法(手机端,兼容ios和android),返回值为base64的字符串,压缩率ratio可自定义...

方法的定义: getCompressBase64(img, ratio){//img为通过"document.getElementByTagName('input[type=file]')[0]"拿到的图片blog对象, 压缩率ratio范围为0-1   if(Object.prototype.toString.call(img) === '[object HTMLInputElement...

weixin_33912638的博客 491

算法岗实习面试全攻略:从简历到offer的实战经验

在机器学习与深度学习领域,算法岗实习面试是进入大厂的关键一步。其核心原理在于通过有限时间评估候选人的代码能力、项目深度与工程直觉。技术价值体现在能高效筛选出匹配岗位需求的人才,应用场景覆盖互联网、金融、自动驾驶等行业。面试通常涉及机器学习基础、深度学习原理、代码刷题及项目追问,尤其关注过拟合、正则化、优化器等高频考点。自然收敛到本文主题:系统拆解算法岗实习面试的准备策略,包括简历优化、项目表达、公司差异应对及复盘方法,帮助在校生提升通过率。

weixin_33806300的博客 447

iOS图片压缩成指定大小

在iOS中涉及一些图片显示和处理问题,在实际中碰到过修改账户头像时上传头像出现 error = Error Domain=com.alamofire.error.serialization.response Code=-1011 “Request failed: not found (404)” UserInfo={com.alamofire.serialization.response.erro

Eliane_的博客 1634

iOS开发中一些常用的check事项2

/** * 判断字符串是否不为空、判断数组是否不为空或元素不为0 * */ +(BOOL)isNotEmpty:(id) parameter;/** * 判断字符串是否为空、判断数组是否为空或元素为0 */ +(BOOL)isEmpty:(id) parameter;/** * 判断图片url是否包含http,取得拼接后的url * * @return NSS

喵咪不爱吃鱼的博客 564

iOS 图片压缩处理,本地存储

iOS 图片压缩处理,本地存储 图片压缩处理 图片本地存储 图片上传服务器 1.图片压缩处理最近做论坛功能,发帖的时候需要用到从相册中选取图片然后上传,由于每次上传图片的最大数量为9张,所以需要对图片进行压缩。开始时用了以前经常用的压缩的方法://压缩图片质量 +(UIImage *)reduceImage:(UIImage *)image percent:(float)percent {

EmulateStep的博客 2343

[erlang]针对http传输过程中body数据的优化

在项目开发过程中,有需要上传超大字符串数据的场景。但是又不是文件上传。经过思考对上传数据进行一次压缩,降低字符串长度即降低数据在网络传输过程中的大小,达到优化的目的。 客户端是由iOS或者Android开发的app,故需要客户端引入对zip压缩算法的支持,服务端由erlang开发,erlang的zip库模块基本已经够用了。 我是直接在Linux环境下,用zip命令压缩了一个数据文件,可以看...

生命贵在运动 355
上一篇: iOS 计算沙盒目录下一个文件夹的总大小
下一篇: 将文件保存在Documents/fileName下
oneTagTag
博客等级 码龄11年 1粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值