Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 

Utility class to get and put unsigned values to a ByteBuffer object Java code example - Click here to copy ->>>

   Can't find what you're looking for? Try our search:

Really working examples categorized by API, package, class. You can compile and run our examples right away! Not from source code for Java projects - only working examples! Copy, compile and run!
------------------

Code:

 

package com.ronsoft.books.nio.buffers;

import java.nio.ByteBuffer;

/**
 * Utility class to get and put unsigned values to a ByteBuffer object.
 * All methods here are static and take a ByteBuffer object argument.
 * Since java does not provide unsigned primitive types, each unsigned
 * value read from the buffer is promoted up to the next bigger primitive
 * data type.  getUnsignedByte() returns a short, getUnsignedShort() returns
 * an int and getUnsignedInt() returns a long.  There is no getUnsignedLong()
 * since there is no primitive type to hold the value returned.  If needed,
 * methods returning BigInteger could be implemented.
 * Likewise, the put methods take a value larger than the type they will
 * be assigning.  putUnsignedByte takes a short argument, etc.
 *
 * @author Ron Hitchens (ron@ronsoft.com)
 * @version $Id: Unsigned.java,v 1.1 2002/02/12 22:06:44 ron Exp $
 */
public class Unsigned
{
   public static short getUnsignedByte (ByteBuffer bb)
   {
      return ((short)(bb.get() & 0xff));
   }

   public static void putUnsignedByte (ByteBuffer bb, int value)
   {
      bb.put ((byte)(value & 0xff));
   }

   public static short getUnsignedByte (ByteBuffer bb, int position)
   {
      return ((short)(bb.get (position) & (short)0xff));
   }

   public static void putUnsignedByte (ByteBuffer bb, int position,
      int value)
   {
      bb.put (position, (byte)(value & 0xff));
   }

   // ---------------------------------------------------------------

   public static int getUnsignedShort (ByteBuffer bb)
   {
      return (bb.getShort() & 0xffff);
   }

   public static void putUnsignedShort (ByteBuffer bb, int value)
   {
      bb.putShort ((short)(value & 0xffff));
   }

   public static int getUnsignedShort (ByteBuffer bb, int position)
   {
      return (bb.getShort (position) & 0xffff);
   }

   public static void putUnsignedShort (ByteBuffer bb, int position,
      int value)
   {
      bb.putShort (position, (short)(value & 0xffff));
   }

   // ---------------------------------------------------------------

   public static long getUnsignedInt (ByteBuffer bb)
   {
      return ((long)bb.getInt() & 0xffffffffL);
   }

   public static void putUnsignedInt (ByteBuffer bb, long value)
   {
      bb.putInt ((int)(value & 0xffffffffL));
   }

   public static long getUnsignedInt (ByteBuffer bb, int position)
   {
      return ((long)bb.getInt (position) & 0xffffffffL);
   }

   public static void putUnsignedInt (ByteBuffer bb, int position,
      long value)
   {
      bb.putInt (position, (int)(value & 0xffffffffL));
   }

   // ---------------------------------------------------

   public static void main (String [] argv)
      throws Exception
   {
      ByteBuffer buffer = ByteBuffer.allocate (20);

      buffer.clear();
      Unsigned.putUnsignedByte (buffer, 255);
      Unsigned.putUnsignedByte (buffer, 128);
      Unsigned.putUnsignedShort (buffer, 0xcafe);
      Unsigned.putUnsignedInt (buffer, 0xcafebabe);

      for (int i = 0; i < 8; i++) {
         System.out.println ("" + i + ": "
            + Integer.toHexString ((int)getUnsignedByte (buffer, i)));
      }

      System.out.println ("2: " + Integer.toHexString (getUnsignedShort (buffer, 2)));
      System.out.println ("4: " + Long.toHexString (getUnsignedInt (buffer, 4)));
   }
}

 
 



References.

The list of classes which were used on this page you can find below. The links to Java API contain official SUN documentation about all used classes.

  java.nio.ByteBuffer

  java.math.BigInteger

  java.lang.Exception




[ Go Back ]



Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy