Solved

How to convert bytes to long...

Posted on 1999-01-18
5
183 Views
Last Modified: 2010-05-03
I think it would be easer to explain what it is I am trying to do rather than just ask a question. I would like to write a program that compresses files and then saves them into a temp. file. This file would contain all the compressed data. I have started to do this as follows:

1)Load the file to be compressed into a byte array
2)compress the byte array with zlib
3)find the origanal and new size of the byte array*
4)get the file name of the compressed file
5)now I start saveing the data into one file
    first I save one byte telling how many bytes are in the compressed files name, next I save that file name. Then I save the origanal and the new size of the byte array as longs(4 bytes each) Then I save save the actual byte array. This is the easy part. (The part I have done) Now I need to read back the file...

First I get the entire file and put it into a byte array. I then use the first byte to tell me how many bytes to read for the file name. Then next 8 bytes(heres the problem) contain the origanal and new(compressed) sizes of the byte array. They are both longs I get these 8 bytes and I don't know how to convert them back into the long long format. To simplafy the problem. Use the put command to put a long number to a file then load that same file into a byte array. This byte array should only be 4 bytes long. I then need to convert those 4 bytes into the origanl long. Wow big... Hope some one can help! Thanks in advance!!!!
0
Comment
Question by:testing38
5 Comments
 
LVL 3

Accepted Solution

by:
idt earned 200 total points
ID: 1469265
Testing38,

The lset function is great for converting datatypes in VB, lets you fill in from the left between two user defined types, in the example I used bytes 1 - 8  for the file sizes, understanding that byte zero was for filename length.

Type a
    'bytes a-d are long int #1
    a As Byte
    b As Byte
    c As Byte
    d As Byte
    'bytes a-d are long int #2
    e As Byte
    f As Byte
    g As Byte
    h As Byte
End Type

Type b
    'for long int #1
    a As Long
    'for long int #2
    b As Long
End Type

Global t1 As a
Global t2 As b

...


t1.a = yourbytearray(1)
t1.b = yourbytearray(2)
t1.c = yourbytearray(3)
t1.d = yourbytearray(4)
t1.e = yourbytearray(5)
t1.f = yourbytearray(6)
t1.g = yourbytearray(7)
t1.h = yourbytearray(8)
LSet t2 = t1
MsgBox Format$(t2.a) + " " + Format$(t2.b)

This is only one method, but quite robust and solves other data conversion problems aswell.

-iDT
0
 
LVL 1

Expert Comment

by:Johnn
ID: 1469266
if you unlock the question i've got a function for you that will make it a piece of cake. (depending on how your building the 4 byte block, if you want I've got a function for that too)

John
0
 

Author Comment

by:testing38
ID: 1469267
idt: good job! I guess it's not the best way of doing this (as I hear) but It does work and that's what counts.  A+ work
Johnn: nice to hear you have a function. Too bad you did not post it... Then I could at least of considered who to give the points to. Now I only have one choice....
0
 
LVL 1

Expert Comment

by:Johnn
ID: 1469268
I couldn't post it until I had a chance to provide an answer/
0
 

Expert Comment

by:paulwelter
ID: 2304830
John, I'll give you points for that funtion.  
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now