Как получить доступ к сжатому значению строки в zstd, используя язык c?

#python #c #compression #zstd

Вопрос:

Я новичок в C. как получить доступ к сжатому значению строки в zstd с помощью c? Я знаю, как это сделать на python, например:

введите описание изображения здесь

 import zstd
import sys

#string to be compressed 
q=b'dcvlnzcndsjlffdfjldfds lfdslffnlklmgkds jsjgsnfklsgklsbfjfdflfkjsfbkhxv vnjfnvjfnfdngkjdfngkjdfkgjdfkgbkjfdgkjdgbkjfgkjfgkjfbgkfdknkjvnfkjvfvmflkvm;flmvsfforiofjreiofjeiorfsdhj'

print("compressed string is...")
w=zstd.compress(q)
print(zstd.compress(q)) 

print('')
print("decompressed string is...")
print(zstd.decompress(w))

print('')
print('decompressed size is =',sys.getsizeof(q),'compressed size is =',sys.getsizeof(w))
 

Выход:

 compressed string is...
b"(xb5/xfd xb0x85x03x00bx89x17x14xa0xa5xe9xdfx04xe0x88xdc2x93x10Ix9dxe2xf4x0fxab.x1camp;h=x8cbx18x0exd7(x0exa3xb5 xd4@xb9Sxcbxf5xfcxd6xf9uxf6Cx86xf5xc9xbcxf4xbcxf4xa7xd8xaaxafxeaxbaxe0x00x88x93x9a_*xebx12xa3x8fxd1[66x07xc6Oxa1Sxb5d,x05xc6x92\xb6dctx01E'0x05x00Otxbfxcbkxe9xa0sex16xacx98x01"

decompressed string is...
b'dcvlnzcndsjlffdfjldfds lfdslffnlklmgkds jsjgsnfklsgklsbfjfdflfkjsfbkhxvvnjfnvjfnfdngkjdfngkjdfkgjdfkgbkjfdgkjdgbkjfgkjfgkjfbgkfdknkjvnfkjvfvmflkvm;flmvsfforiofjreiofjeiorfsdhj'

decompressed size is = 209 compressed size is = 154 '''
 

Как сделать то же самое и с языком си?
В C я попробовал dictionary_compression, а также simple_compression, но я могу получить доступ только к размеру, а не к сжатому значению.

Комментарии:

1. «Как я могу использовать API zstd C?» кажется слишком широким вопросом для этого… Начните с чтения документации?

2. Можете ли вы показать нам свой код на С, который не работает, и ошибки, которые вы из него получаете?

3. Взгляните на этот пример .