Introduction
In this lab, we will learn about the Java reverseBytes() method of the Long class, which is used to reverse the order of bytes of the two's complement binary representation of the long value passed.
Create a Java class
First, we need to create a Java class in the ~/project directory. Let's name it ReverseBytesDemo.java.
public class ReverseBytesDemo {
}
Add the main method
Next, we need to add the main method to our class. This will be the entry point for our program.
public static void main(String[] args) {
}
Using the reverseBytes() method
Now, let's use the reverseBytes() method to reverse the bytes of a long value.
long a = 342;
long reversedValue = Long.reverseBytes(a);
System.out.println("Original value: " + a);
System.out.println("Reversed value: " + reversedValue);
This code will output:
Original value: 342
Reversed value: 6197234562238513152
Using user input
We can also take user input and reverse the bytes of the input value. Let's modify our code to take user input.
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a number: ");
long userInput = scanner.nextLong();
long reversedValue = Long.reverseBytes(userInput);
System.out.println("Original value: " + userInput);
System.out.println("Reversed value: " + reversedValue);
This code prompts the user to enter a number and then reverses the bytes of the input value. Run the code using javac ReverseBytesDemo.java && java ReverseBytesDemo command.
Handling exceptions
We can handle any exceptions that may occur when taking user inputs by using a try-catch block.
Scanner scanner = new Scanner(System.in);
try {
System.out.print("Enter a number: ");
long userInput = scanner.nextLong();
long reversedValue = Long.reverseBytes(userInput);
System.out.println("Original value: " + userInput);
System.out.println("Reversed value: " + reversedValue);
} catch (InputMismatchException e) {
System.out.println("Invalid input. Please enter a valid number.");
}
This code uses a try-catch block to handle any exceptions that may occur when the user enters an invalid input.
Testing negative value
Let's test the reverseBytes() method with negative number.
long a = -23;
long reversedValue = Long.reverseBytes(a);
System.out.println("Original value: " + a);
System.out.println("Reversed value: " + reversedValue);
This code will output:
Original value: -23
Reversed value: -1585267068834414593
Outputting binary representation
We can also output the binary representation of the original and reversed values using the Long.toBinaryString() method.
System.out.println("Original value in binary: " + Long.toBinaryString(a));
System.out.println("Reversed value in binary: " + Long.toBinaryString(reversedValue));
This code will output:
Original value in binary: 1111111111111111111111111111111111111111111111111111111111101001
Reversed value in binary: 1010101100000000000000000000000000000000000000000000000000000000
Note that the binary representation of the reversed value is the original binary representation with each group of 8 bits reversed.
Using user-defined function
Let's write a user-defined function to encapsulate the reverseBytes() method.
public class ReverseBytesDemo {
public static long reverseBytes(long value) {
return Long.reverseBytes(value);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("Enter a number: ");
long userInput = scanner.nextLong();
long reversedValue = reverseBytes(userInput);
System.out.println("Original value: " + userInput);
System.out.println("Reversed value: " + reversedValue);
System.out.println("Original value in binary: " + Long.toBinaryString(userInput));
System.out.println("Reversed value in binary: " + Long.toBinaryString(reversedValue));
} catch (InputMismatchException e) {
System.out.println("Invalid input. Please enter a valid number.");
}
}
}
Running user-defined function
Now that we have our user-defined function set up, we can test it by running the modified main() method again.
Scanner scanner = new Scanner(System.in);
try {
System.out.print("Enter a number: ");
long userInput = scanner.nextLong();
long reversedValue = reverseBytes(userInput);
System.out.println("Original value: " + userInput);
System.out.println("Reversed value: " + reversedValue);
System.out.println("Original value in binary: " + Long.toBinaryString(userInput));
System.out.println("Reversed value in binary: " + Long.toBinaryString(reversedValue));
} catch (InputMismatchException e) {
System.out.println("Invalid input. Please enter a valid number.");
}
Run the code using javac ReverseBytesDemo.java && java ReverseBytesDemo command.
Summary
In this lab, we learned about the Java reverseBytes() method of the Long class, which is used to reverse the order of bytes of the two's complement binary representation of the long value passed. We also learned how to use user input, handle exceptions, output binary representation, and encapsulate the method in a user-defined function. By following these steps, you should now be able to use the reverseBytes() method in your own Java programs.



