how to compress string into string
How would i go about compressing a string? i need to compress a string but i need the compressed value to also be a string or be able to be turned into a string
5 Replies
I wasn't able to find the answer to your question in the official Deno documentation. However, based on your question, if you're looking to compress a string and then have the ability to represent the compressed data as a string, you might consider using a compression algorithm that can be encoded into a string format, such as Base64.
Here's a general idea of how you might approach this:
1. Use a compression library to compress your string. Deno has built-in support for some compression algorithms like gzip and deflate through the
std/encoding
module.
2. Once you have the compressed data, you can convert it to a Base64 string using the btoa
function or Deno's built-in TextEncoder
and TextDecoder
utilities.
Please note that this advice is not based on the Deno documentation, and I would advise you to double-check the accuracy of this advice. Here's a very basic example of how you might encode and decode a string using Base64 in Deno:
Remember that this is just a basic example and does not include actual compression. You would need to integrate a compression step before encoding the data to Base64. Also, keep in mind that Base64 encoding will increase the size of the data by about 33%, so it's not a method of compression but away to safely represent binary data as a string.
For actual compression, you would need to use a library or API that provides compression algorithms, and then you could apply the Base64 encoding to the result of that compression. Always test your implementation to ensure it meets your requirements.
Using base91 to encode the raw compressed data would be a little more space efficient than base64.
https://deno.land/x/base91@v1.1
The length a composition of your strings is going to dictate if compression will help or not. Compression works well with long repetitive data so if the strings are short and basically random, the compressed size may be larger than the string alone.
Zstd and brotli are two popular compression algorithms to try.
https://deno.land/x/zstd_wasm@0.0.21
https://deno.land/x/brotli@0.1.7
like pyrote said the type of content dictates what, if any compression it makes sense to do. for certain workloads like json, html or other content with a lot of repetitive words, simple DIY approach may work: for compression, split by space to array, make a dictionary/map of all words/parts, then re-encode content as an array of indexes to said dictionary. encode as json with the dictionary part and content index array. decoding is then just reconstructing the content array from the dictionary. this is very simple, can be effective, and no need to worry about additional overhead of base64 or other encodings. there are various ways to further optimize the algorithm if you choose to go that route.
you can compress it to gzip using CompressionStream (https://developer.mozilla.org/en-US/docs/Web/API/CompressionStream) and then encode the resulting binary in base64