cari
Rumahpembangunan bahagian belakangtutorial phpphp&net对称压缩解压缩研讨

php&.net对称压缩解压缩探讨

http://blog.csdn.net/michaell_zhang/article/details/5979883

C#客户端访问PHP SOAP WebService,当传输大量文本数据时,可以通过压缩减少网络传输。

C#在System.IO.Compression命名空间下提供了两个类GZipStream 类和DeflateStream类来进行数据的压缩和解压缩。经本人实验,在C#下使用GZipStream压缩的字符串在PHP下使用gzuncompress函数无法解压缩,有人说可以使用gzdecode解开,但本人的PHP不支持gzdecode函数,但有gzencode函数(why?原因未明,据说是PHP的BUG,可能到PHP6才提供此函数)。

C#下使用DeflateStream类压缩文本后,可以在PHP下用gzinflate解压缩。示例代码如下:

客户端C#(在头4个字节增加了原文本的长度,方便在C#中解压缩,对于在PHP端解压缩这个没有用处):

public static string Compress(string text)        {            byte[] buffer = Encoding.UTF8.GetBytes(text);            MemoryStream ms = new MemoryStream();            using (DeflateStream zip = new DeflateStream(ms, CompressionMode.Compress, true))            {                zip.Write(buffer, 0, buffer.Length);            }            ms.Position = 0;            MemoryStream outStream = new MemoryStream();            byte[] compressed = new byte[ms.Length];            ms.Read(compressed, 0, compressed.Length);            byte[] gzBuffer = new byte[compressed.Length + 4];            System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);            System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);            return Convert.ToBase64String(gzBuffer);        }

?服务端PHP:

?

function Decompress($strSource){    $strTemp = base64_decode($strSource);    $strTemp = substr($strTemp, 4);    return gzinflate($strTemp);}

?支持中文,编码为UTF8.

?

http://blog.csdn.net/allsharps/article/details/7357328

/// <summary>    /// 简单的压缩    /// </summary>    public static class CompressHelper    {        /// <summary>        /// 压缩字符串        /// </summary>        /// <param name="str">        /// <returns></returns>        public static byte[] CompressString(string str)        {            return CompressBytes(Encoding.UTF8.GetBytes(str));        }        /// <summary>        /// 压缩二进制        /// </summary>        /// <param name="str">        /// <returns></returns>        public static byte[] CompressBytes(byte[] str)        {            var ms = new MemoryStream(str) {Position = 0};            var outms = new MemoryStream();            using (var deflateStream = new DeflateStream(outms, CompressionMode.Compress, true))            {                var buf = new byte[1024];                int len;                while ((len = ms.Read(buf, 0, buf.Length)) > 0)                    deflateStream.Write(buf, 0, len);            }            return outms.ToArray();        }        /// <summary>        /// 解压字符串        /// </summary>        /// <param name="str">        /// <returns></returns>        public static string DecompressString(byte[] str)        {            return Encoding.UTF8.GetString(DecompressBytes(str));        }        /// <summary>        /// 解压二进制        /// </summary>        /// <param name="str">        /// <returns></returns>        public static byte[] DecompressBytes(byte[] str)        {            var ms = new MemoryStream(str) {Position = 0};            var outms = new MemoryStream();            using (var deflateStream = new DeflateStream(ms, CompressionMode.Decompress, true))            {                var buf = new byte[1024];                int len;                while ((len = deflateStream.Read(buf, 0, buf.Length)) > 0)                    outms.Write(buf, 0, len);            }            return outms.ToArray();        }    }

?

?

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
华为GT3 Pro和GT4的差异是什么?华为GT3 Pro和GT4的差异是什么?Dec 29, 2023 pm 02:27 PM

许多用户在选择智能手表的时候都会选择的华为的品牌,其中华为GT3pro和GT4都是非常热门的选择,不少用户都很好奇华为GT3pro和GT4有什么区别,下面就就给大家介绍一下二者。华为GT3pro和GT4有什么区别一、外观GT4:46mm和41mm,材质是玻璃表镜+不锈钢机身+高分纤维后壳。GT3pro:46.6mm和42.9mm,材质是蓝宝石玻璃表镜+钛金属机身/陶瓷机身+陶瓷后壳二、健康GT4:采用最新的华为Truseen5.5+算法,结果会更加的精准。GT3pro:多了ECG心电图和血管及安

修复:截图工具在 Windows 11 中不起作用修复:截图工具在 Windows 11 中不起作用Aug 24, 2023 am 09:48 AM

为什么截图工具在Windows11上不起作用了解问题的根本原因有助于找到正确的解决方案。以下是截图工具可能无法正常工作的主要原因:对焦助手已打开:这可以防止截图工具打开。应用程序损坏:如果截图工具在启动时崩溃,则可能已损坏。过时的图形驱动程序:不兼容的驱动程序可能会干扰截图工具。来自其他应用程序的干扰:其他正在运行的应用程序可能与截图工具冲突。证书已过期:升级过程中的错误可能会导致此issu简单的解决方案这些适合大多数用户,不需要任何特殊的技术知识。1.更新窗口和Microsoft应用商店应用程

如何修复无法连接到iPhone上的App Store错误如何修复无法连接到iPhone上的App Store错误Jul 29, 2023 am 08:22 AM

第1部分:初始故障排除步骤检查苹果的系统状态:在深入研究复杂的解决方案之前,让我们从基础知识开始。问题可能不在于您的设备;苹果的服务器可能会关闭。访问Apple的系统状态页面,查看AppStore是否正常工作。如果有问题,您所能做的就是等待Apple修复它。检查您的互联网连接:确保您拥有稳定的互联网连接,因为“无法连接到AppStore”问题有时可归因于连接不良。尝试在Wi-Fi和移动数据之间切换或重置网络设置(“常规”>“重置”>“重置网络设置”>设置)。更新您的iOS版本:

Golang函数的byte、rune和string类型转换技巧Golang函数的byte、rune和string类型转换技巧May 17, 2023 am 08:21 AM

在Golang编程中,byte、rune和string类型是非常基础、常见的数据类型。它们在处理字符串、文件流等数据操作时发挥着重要作用。而在进行这些数据操作时,我们通常需要对它们进行相互的转换,这就需要掌握一些转换技巧。本文将介绍Golang函数的byte、rune和string类型转换技巧,旨在帮助读者更好地理解这些数据类型,并能够熟练地在编程实践中应用

1byte等于多少bit1byte等于多少bitMar 19, 2021 pm 02:52 PM

1byte等于8bit。数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit)为单位,一个位就代表一个0或1(即二进制),每8个位(bit)组成一个字节(Byte),是最小一级的信息单位;因而,“1Byte=8bit”。

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code<form name="myform"

java Object转byte与byte转Object的方法是什么java Object转byte与byte转Object的方法是什么Apr 20, 2023 am 11:37 AM

Object转byte与byte转Object今天实现一下如何从Object去转为byte和如何从byte转为Object。首先,定义一个类student:packagecom.byteToObject;importjava.io.Serializable;publicclassstudentimplementsSerializable{privateintsid;privateStringname;publicintgetSid(){returnsid;}publicvoidsetSid(in

ascii码在计算机中用多少byte存放?ascii码在计算机中用多少byte存放?Dec 07, 2020 pm 02:37 PM

ascii码在计算机中用1个byte(字节)存放,ASCII码共有128个字符,每一个字符对应一个数值,称为该字符的ASCII码值;计算机内部用一个字节(8位二进制位)存放一个7位ASCII码值。

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),