Solved

Converting long to bytes

Posted on 1998-10-12
11
258 Views
Last Modified: 2008-02-01
Having trouble as CRC16 returns a long and I want it to go into an array of two bytes. How do you convert int or long numbers into bytes. Otherwise, does anyone know where to get a 16 bit CRC class that does this.
0
Comment
Question by:yung
  • 4
  • 3
  • 3
  • +1
11 Comments
 
LVL 8

Expert Comment

by:diakov
ID: 1225680
Hi 'yung',

Try this out. It converts the 64-bit long into 8 bytes and puts it into an array. You can apply it also to 32-bit ints.


            byte[] barray = new byte[8];
            long L = 0x0A000B000C000D00L;
            long byte_mask = 255;

            for (int i = 7; i >= 0; i--)
            {
              barray[i] = (byte)((L & (byte_mask << (8 * i))) >> (8 * i));      
              System.out.println(barray[i]);
            }



0
 

Author Comment

by:yung
ID: 1225681
Sorry if this is a dumb question, but what does " 0x0A000B000C000D00L" mean, is this hex? If I'm using the code for an int what would I use?

Ta
0
 
LVL 8

Expert Comment

by:diakov
ID: 1225682
Yes, I used hex just as an example. There you clearly see the bytes. But you can use plain numbers as well. Like
L = 12341235424312L;
In case of int:

byte[] barray = new byte[4];
int iii = 0x0A000D00L; //or something like 341234;
int byte_mask = 255;

for (int i = 3; i >= 0; i--)
{
  barray[i] = (byte)((iii & (byte_mask << (8 * i))) >> (8 * i));
  System.out.println(barray[i]);
}
0
 
LVL 6

Expert Comment

by:gadio
ID: 1225683
yung, here is another way of doing that (I prefer it its a bit more elegant):



public static byte[] longToByteArray(long num) {
   ByteArrayOutputStream baos;
   try {
      DataOutputStream dos = new DataOutputStream(baos = new ByteArrayOutputStream());
      dos.writeLong(num);
      return baos.toByteArray();
   } catch( Exception e ) {}
   return null;
}
           
0
 

Author Comment

by:yung
ID: 1225684
Thanks...both do the trick. I'll finally finish this datacomms assignment. You'll need to post as answrs tho, or else I can't unload the points.

Thanks
0
Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

 
LVL 8

Expert Comment

by:diakov
ID: 1225685
The 'gadio's answer is more elegant and Java style indeed. However, I still prefer the bitwise operations for small values like 1 long.

Say who takes the points.
0
 
LVL 6

Expert Comment

by:gadio
ID: 1225686
yung, wherever the point are going to, learn this pattern of conversion in java, you can use it to change any type to bytes and back this way, even when you don't have a bitwize operations to do that (like doubles and floats).
0
 
LVL 1

Expert Comment

by:ramsay
ID: 1225687
Should I toss a coin?

Heads for Diakov, tails for gadio...
Ok.. here goes

woops.. where'd that coin bounce!!??
DOH!

:)
0
 
LVL 8

Expert Comment

by:diakov
ID: 1225688
as far as I'm concerned points go to 'gadio'.
0
 
LVL 6

Accepted Solution

by:
gadio earned 50 total points
ID: 1225689
Thank you diakov.
0
 

Author Comment

by:yung
ID: 1225690
Hey, both answers were fine and both worked... and gadio, I have studied up on my bitwize operations. Maybe I'll even do well in my exams. Thanks to you both.

I'm giving the points only to gadio because diakov didn't actually post as an answer so I don't know how to do it any other way.
Cheers

yung
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

For beginner Java programmers or at least those new to the Eclipse IDE, the following tutorial will show some (four) ways in which you can import your Java projects to your Eclipse workbench. Introduction While learning Java can be done with…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…

757 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

18 Experts available now in Live!

Get 1:1 Help Now