0
lua의 문자열에서 gzip을 압축 해제하는 데 문제가 있습니다. (mb 나쁜 이해)Lua가 문자열에서 gzip을 압축 해제합니다.
응답 하나의 웹 서비스의 응답은 base64로 인코딩 된 gzip 문자열입니다. 샘플의 경우 C#에서 일부 코드를 얻습니다.
public static string Decompress(byte[] value, Encoding Encoding = null)
{
if (value == null) return null;
Encoding = Encoding ?? System.Text.Encoding.Unicode;
using (var inputStream = new MemoryStream(value))
using (var outputStream = new MemoryStream())
{
using (var zip = new GZipStream(inputStream, CompressionMode.Decompress))
{
byte[] bytes = new byte[4096];
int n;
while ((n = zip.Read(bytes, 0, bytes.Length)) != 0)
{
outputStream.Write(bytes, 0, n);
}
zip.Close();
}
return Encoding.GetString(outputStream.ToArray());
}
}
static void Main(string[] args)
{
const string encodedText = "H4sIAAAAAAAEAHMNCvIPUlRwzS0oqVQoLinKzEtXyC9SyCvNyYFxM/OAqKC0RKEgsSgxN7UktQgAwOaxgjUAAAA=";
byte[] decodedBytes = Convert.FromBase64String(encodedText);
var decodedString = Decompress(decodedBytes, Encoding.UTF8);
Console.WriteLine(decodedString);
}
나는 (의 nginx에) 루아이 작업을 수행 바이트
local byte_table={};
base64.base64_decode(res_string):gsub(".", function(c){
table.insert(byte_table, string.byte(c))
})
의 base64로 문자열 배열에서 만들하지만 zlib와 함께 몇 가지 문제를 가지고하려고합니다.
lua에서 IO 스트림을 사용하고 gzip을 압축 해제하는 방법을 알려주십시오.
u는이 마법의 숫자 31를 얻을 :
난은 gzip 압축 해제에 대한 사용 http://luaforge.net/projects/lzlib/ 해요? –
어딘가에 인터넷 검색. – FareakyGnome
'로컬 결과 = zlib.decompress (base64.base64_decode ('H4sIAAAAAAAEAHMNCvIPUlRwzS0oqVQoLinKzEtXyC9SyCvNyYFxM/OAqKC0RKEgsSgxN7UktQgAwOaxgjUAAAA = '), 31);' ERROR! 입력 매개 변수에 빈 문자열 또는 널 문자열 –