473,473 Members | 1,475 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

Compression namespace for Array

Fla
Hi!
I would like to use Compression namespace for Array, i.e. use .NET
native Compression for compress a String, or an Array of Integer whose
elements are returned values of AscW for each char of the String.
I tried with the code available @
http://msdn2.microsoft.com/en-us/lib...am(VS.80).aspx
but with no success 'cause I obtained ms.lenght buffer.length.

This is my source code for CompressData:

Private Sub CompressData()
Dim BUFFERSIZE As Integer = DataArray.Length *
Marshal.SizeOf(DataArray(0))
Dim buffer(BUFFERSIZE - 1) As Byte

'Dump integer Array DataArray in Byte Array buffer
Dim IndexValue As Integer = 0
For Index As Integer = 0 To BUFFERSIZE - 1
If ((Index << 31) = 0) Then ' if Even
buffer(Index) = (DataArray(IndexValue) >8)
Else
buffer(Index) = (DataArray(IndexValue) And &HFF)
IndexValue += 1
End If

Next

Dim ms As New MemoryStream()
' Use the newly created memory stream for the compressed data.
Dim compressedzipStream As New GZipStream(ms,
CompressionMode.Compress, True)
compressedzipStream.Write(buffer, 0, buffer.Length)
' Close the stream.
compressedzipStream.Close()
Dim BufferOut() As Byte = ms.ToArray()

End Sub

I've got the same problem also for DecompressData with the added
difficulty of using chunk of Bytes, as reported in the previous MDSN
article.

What I'm doing wrong? Is there any work-around, any trick to use
Compression not only for stream file but also for Array of Objects? Do
you have any suggestion?
Are there any commercial libraries, with no redistribuition license,
doing this?

Thanks

Nov 12 '06 #1
6 1537
Why not just encode the string so that you get an array of bytes?
Fla wrote:
Hi!
I would like to use Compression namespace for Array, i.e. use .NET
native Compression for compress a String, or an Array of Integer whose
elements are returned values of AscW for each char of the String.
I tried with the code available @
http://msdn2.microsoft.com/en-us/lib...am(VS.80).aspx
but with no success 'cause I obtained ms.lenght buffer.length.

This is my source code for CompressData:

Private Sub CompressData()
Dim BUFFERSIZE As Integer = DataArray.Length *
Marshal.SizeOf(DataArray(0))
Dim buffer(BUFFERSIZE - 1) As Byte

'Dump integer Array DataArray in Byte Array buffer
Dim IndexValue As Integer = 0
For Index As Integer = 0 To BUFFERSIZE - 1
If ((Index << 31) = 0) Then ' if Even
buffer(Index) = (DataArray(IndexValue) >8)
Else
buffer(Index) = (DataArray(IndexValue) And &HFF)
IndexValue += 1
End If

Next

Dim ms As New MemoryStream()
' Use the newly created memory stream for the compressed data.
Dim compressedzipStream As New GZipStream(ms,
CompressionMode.Compress, True)
compressedzipStream.Write(buffer, 0, buffer.Length)
' Close the stream.
compressedzipStream.Close()
Dim BufferOut() As Byte = ms.ToArray()

End Sub

I've got the same problem also for DecompressData with the added
difficulty of using chunk of Bytes, as reported in the previous MDSN
article.

What I'm doing wrong? Is there any work-around, any trick to use
Compression not only for stream file but also for Array of Objects? Do
you have any suggestion?
Are there any commercial libraries, with no redistribuition license,
doing this?

Thanks
Nov 12 '06 #2
Fla
Hi!
Did you mean System.Text.Encoding.ASCII.GetBytes as the following code
lines?
Dim Buffer() As Byte = System.Text.Encoding.ASCII.GetBytes(StringChar)

with

For Index As Integer = 0 To 299
StringChar &= ChrW(Index + 255)
Next

Thanks

Göran Andersson ha scritto:
Why not just encode the string so that you get an array of bytes?
Fla wrote:
Hi!
[...]
Nov 12 '06 #3
Yes. Except that you would need to use a dirrerent encoding to handle
characters that is not in the ASCII character set, like UTF8.

Fla wrote:
Hi!
Did you mean System.Text.Encoding.ASCII.GetBytes as the following code
lines?
Dim Buffer() As Byte = System.Text.Encoding.ASCII.GetBytes(StringChar)

with

For Index As Integer = 0 To 299
StringChar &= ChrW(Index + 255)
Next

Thanks

Göran Andersson ha scritto:
>Why not just encode the string so that you get an array of bytes?
Fla wrote:
>>Hi!
[...]
Nov 14 '06 #4
Fla
Göran Andersson ha scritto:
Yes. Except that you would need to use a dirrerent encoding to handle
characters that is not in the ASCII character set, like UTF8.
I can compress and decompress Array of bytes but I can't do this if I
dump the interrmediate compress byte() in a string. I'm using
encoding.unicode.getstring to dump the intermediate compress byte() on
a string and I'm using encoding.unicode.getbytes to get the array of
bytes to be uncompressed.
I can't get the result 'cause Deflate.Read(..) returns zero; I noticed
that when I try to dump the compressed byte array on a string, I get
less char as I forecast: CompressedBuffer.length = 119 while
CompressedString.Length = 57 using
Dim CompressedString As String =
Encoding.Unicode.GetString(CompressedBuffer).
I expected CompressedString.Length = CeilingUpper(119/2) = 60.
I'm using unicode compression in order to get a String with Char in
Unicode coding 'cause I need 2 bytes per char and storing a number 0 to
65535 in each char. Then I dump the this Unicode coded string on a
field of a db.

Any ideas? How could I dump the compressed array of bytes on an
intermediate string?
>
Fla wrote:
Hi!
Did you mean System.Text.Encoding.ASCII.GetBytes as the following code
lines?
Dim Buffer() As Byte = System.Text.Encoding.ASCII.GetBytes(StringChar)

with

For Index As Integer = 0 To 299
StringChar &= ChrW(Index + 255)
Next

Thanks

Göran Andersson ha scritto:
Why not just encode the string so that you get an array of bytes?
Fla wrote:
Hi!
[...]
Nov 15 '06 #5
Have you checked out System.String.Intern? I saved about 30% using this in
a
geocoder with millions of street names.

No compression required..
Nov 15 '06 #6
If you have some binary data in an array, you can't just treat it as if
it was an encoded string, because then you will lose some data when it's
decoded.

If you want a string representation of binary data, you can use the
Convert.ToBase64String and Convert.FromBase64String methods to convert
to and from a base 64 string.

Fla wrote:
Göran Andersson ha scritto:
>Yes. Except that you would need to use a dirrerent encoding to handle
characters that is not in the ASCII character set, like UTF8.

I can compress and decompress Array of bytes but I can't do this if I
dump the interrmediate compress byte() in a string. I'm using
encoding.unicode.getstring to dump the intermediate compress byte() on
a string and I'm using encoding.unicode.getbytes to get the array of
bytes to be uncompressed.
I can't get the result 'cause Deflate.Read(..) returns zero; I noticed
that when I try to dump the compressed byte array on a string, I get
less char as I forecast: CompressedBuffer.length = 119 while
CompressedString.Length = 57 using
Dim CompressedString As String =
Encoding.Unicode.GetString(CompressedBuffer).
I expected CompressedString.Length = CeilingUpper(119/2) = 60.
I'm using unicode compression in order to get a String with Char in
Unicode coding 'cause I need 2 bytes per char and storing a number 0 to
65535 in each char. Then I dump the this Unicode coded string on a
field of a db.

Any ideas? How could I dump the compressed array of bytes on an
intermediate string?
>Fla wrote:
>>Hi!
Did you mean System.Text.Encoding.ASCII.GetBytes as the following code
lines?
Dim Buffer() As Byte = System.Text.Encoding.ASCII.GetBytes(StringChar)

with

For Index As Integer = 0 To 299
StringChar &= ChrW(Index + 255)
Next

Thanks

Göran Andersson ha scritto:

Why not just encode the string so that you get an array of bytes?
Fla wrote:
Hi!
[...]
Nov 16 '06 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: m|sf|t | last post by:
All, I have a snippet of code below. In my foreach, I would like to process only 1 item per hdd value, in the case below, the echo $tib . "\n"; would only display 1 and 2, not 1,1,1,1,2,2,2,2. It...
4
by: James N | last post by:
Here's the situation: I have 3 webforms in my project. Form 1 allows the user to select a type of report to generate. There are 2 possible type of reports, and therefore, Forms 2 and 3 are these...
3
by: orekinbck | last post by:
Hi There Is there any easy way to use the System.Compression tools in .NET 2.0 to compress an entire directory ? All my source code is kept in a single directory so I have written a utility...
5
by: mkarim | last post by:
I am looking for an algorithm I can use in C# that compresses small XML documents. Is there a chance of losing some literal data on decompression (as some claim)? How fast is the...
3
by: Marc Gravell | last post by:
It might just be my tired eyes, but I can't see what is wrong in the following: I have a byte array filled with random data (with a fixed seed to make reproducable); I then compress and...
4
by: Angel Of Death | last post by:
If server uses HTTP 1.1 Gzip compression, how can I use the classes generated using WSDL.exe. I can do : protected override WebRequest GetWebRequest(Uri uri) { WebRequest request =...
6
by: Fla | last post by:
Hi! I would like to use Compression namespace for Array, i.e. use .NET native Compression for compress a String, or an Array of Integer whose elements are returned values of AscW for each char of...
5
by: jeremyje | last post by:
I'm writing some code that will convert a regular string to a byte for compression and then beable to convert that compressed string back into original form. Conceptually I have.... For...
3
by: GiJeet | last post by:
Hello, we have an app that scans documents into TIFF format and we need to transfer them over the internet. If anyone knows of a SDK we can use that can compress TIFFs on the fly or even if it can...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
muto222
php
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.