4 octets in address string : String « Date Type « Android






4 octets in address string

    
/*
 * This file is part of JSTUN. 
 * 
 * Copyright (c) 2005 Thomas King <king@t-king.de> - All rights
 * reserved.
 * 
 * This software is licensed under either the GNU Public License (GPL),
 * or the Apache 2.0 license. Copies of both license agreements are
 * included in this distribution.
 */

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.StringTokenizer;

public class Address {
  int firstOctet;
  int secondOctet;
  int thirdOctet;
  int fourthOctet;

  public Address(int firstOctet, int secondOctet, int thirdOctet,
      int fourthOctet) throws UtilityException {
    if ((firstOctet < 0) || (firstOctet > 255) || (secondOctet < 0)
        || (secondOctet > 255) || (thirdOctet < 0)
        || (thirdOctet > 255) || (fourthOctet < 0)
        || (fourthOctet > 255)) {
      throw new UtilityException("Address is malformed.");
    }
    this.firstOctet = firstOctet;
    this.secondOctet = secondOctet;
    this.thirdOctet = thirdOctet;
    this.fourthOctet = fourthOctet;
  }

  public Address(String address) throws UtilityException {
    StringTokenizer st = new StringTokenizer(address, ".");
    if (st.countTokens() != 4) {
      throw new UtilityException(
          "4 octets in address string are required.");
    }
    int i = 0;
    while (st.hasMoreTokens()) {
      int temp = Integer.parseInt(st.nextToken());
      if ((temp < 0) || (temp > 255)) {
        throw new UtilityException("Address is in incorrect format.");
      }
      switch (i) {
      case 0:
        firstOctet = temp;
        ++i;
        break;
      case 1:
        secondOctet = temp;
        ++i;
        break;
      case 2:
        thirdOctet = temp;
        ++i;
        break;
      case 3:
        fourthOctet = temp;
        ++i;
        break;
      }
    }
  }

  public Address(byte[] address) throws UtilityException {
    if (address.length < 4) {
      throw new UtilityException("4 bytes are required.");
    }
    firstOctet = Utility.oneByteToInteger(address[0]);
    secondOctet = Utility.oneByteToInteger(address[1]);
    thirdOctet = Utility.oneByteToInteger(address[2]);
    fourthOctet = Utility.oneByteToInteger(address[3]);
  }

  public String toString() {
    return firstOctet + "." + secondOctet + "." + thirdOctet + "."
        + fourthOctet;
  }

  public byte[] getBytes() throws UtilityException {
    byte[] result = new byte[4];
    result[0] = Utility.integerToOneByte(firstOctet);
    result[1] = Utility.integerToOneByte(secondOctet);
    result[2] = Utility.integerToOneByte(thirdOctet);
    result[3] = Utility.integerToOneByte(fourthOctet);
    return result;
  }

  public InetAddress getInetAddress() throws UtilityException,
      UnknownHostException {
    byte[] address = new byte[4];
    address[0] = Utility.integerToOneByte(firstOctet);
    address[1] = Utility.integerToOneByte(secondOctet);
    address[2] = Utility.integerToOneByte(thirdOctet);
    address[3] = Utility.integerToOneByte(fourthOctet);
    return InetAddress.getByAddress(address);
  }

  public boolean equals(Object obj) {
    if (obj == null)
      return false;
    try {
      byte[] data1 = this.getBytes();
      byte[] data2 = ((Address) obj).getBytes();
      if ((data1[0] == data2[0]) && (data1[1] == data2[1])
          && (data1[2] == data2[2]) && (data1[3] == data2[3]))
        return true;
      return false;
    } catch (UtilityException ue) {
      return false;
    }
  }

  public int hashCode() {
    return (firstOctet << 24) + (secondOctet << 16) + (thirdOctet << 8)
        + fourthOctet;
  }

}

class UtilityException extends Exception {
  private static final long serialVersionUID = 3545800974716581680L;

  UtilityException(String mesg) {
    super(mesg);
  }

}

class Utility {

  public static final byte integerToOneByte(int value) throws UtilityException {
    if ((value > Math.pow(2,15)) || (value < 0)) {
      throw new UtilityException("Integer value " + value + " is larger than 2^15");
    }
    return (byte)(value & 0xFF);
  }
  
  public static final byte[] integerToTwoBytes(int value) throws UtilityException {
    byte[] result = new byte[2];
    if ((value > Math.pow(2,31)) || (value < 0)) {
      throw new UtilityException("Integer value " + value + " is larger than 2^31");
    }
        result[0] = (byte)((value >>> 8) & 0xFF);
        result[1] = (byte)(value & 0xFF);
    return result; 
  }
  
  public static final byte[] integerToFourBytes(int value) throws UtilityException {
    byte[] result = new byte[4];
    if ((value > Math.pow(2,63)) || (value < 0)) {
      throw new UtilityException("Integer value " + value + " is larger than 2^63");
    }
        result[0] = (byte)((value >>> 24) & 0xFF);
    result[1] = (byte)((value >>> 16) & 0xFF);
    result[2] = (byte)((value >>> 8) & 0xFF);
        result[3] = (byte)(value & 0xFF);
    return result; 
  }
  
  public static final int oneByteToInteger(byte value) throws UtilityException {
    return (int)value & 0xFF;
  }
  
  public static final int twoBytesToInteger(byte[] value) throws UtilityException {
    if (value.length < 2) {
      throw new UtilityException("Byte array too short!");
    }
        int temp0 = value[0] & 0xFF;
        int temp1 = value[1] & 0xFF;
        return ((temp0 << 8) + temp1);
  }
  
  public static final long fourBytesToLong(byte[] value) throws UtilityException {
    if (value.length < 4) {
      throw new UtilityException("Byte array too short!");
    }
        int temp0 = value[0] & 0xFF;
        int temp1 = value[1] & 0xFF;
    int temp2 = value[2] & 0xFF;
    int temp3 = value[3] & 0xFF;
        return (((long)temp0 << 24) + (temp1 << 16) + (temp2 << 8) + temp3);
  }                                        
}

   
    
    
    
  








Related examples in the same category

1.Split with
2.Split first with
3.split By Space and save result to a List
4.Space trim
5.truncate by length
6.Remove all blanks
7.Is a string a Number
8.Random string
9.Tokenizer. Why? Because StringTokenizer is not available in J2ME.
10.String resource
11.Shows creating text with links from HTML in the Java code, rather than from a string resource. Note that for a
12.Join a collection of strings by a seperator
13.Tests if a string is blank: null, emtpy, or only whitespace (" ", \r\n, \t, etc)
14.Tests if a string is numeric, i.e. contains only digit characters
15.Writer implementation that outputs to a StringBuilder
16.Gets the device's phone number as a String.
17.Inspects a link Configuration through reflection API to generate a human readable String with values replaced with their constants names.
18.Returns a String representation of the content of a android.view.Display object.
19.Get String Element Value
20.Join strings
21.Find two consecutive newlines in a string.
22.Retrieve a boolean primitive type from a String.
23.Trim char from string
24.Returns true if the string does not fit in standard ASCII
25.Returns true if the given string is null or empty.
26.Add space to CSV string
27.String fast Split
28.Split a String by a Character, i.e. Split lines by using '\n'
29.String Capitalizer
30.Count char in a string
31.Search char in a string from a starting position
32.load String From Raw Resource
33.Join Collection of String
34.Padding a string, truncate a string
35.Converts a string to title casing.
36.reversing String
37.load Resource To String
38.convert Duration to String
39.Convert string from one encoding to another
40.Object to String and String to Object
41.IP to String
42.Convert string to bumber and convert number to string
43.line string reader in J2ME
44.String to Map with token
45.Generate the client id, which is a fixed string of length 8 concatenated with 12 random bytes
46.StringBuilder Writer
47.Return a specific raw resource contents as a String value.
48.Returns the ISO 8601-format String corresponding to the given duration (measured in milliseconds).
49.Returns a string representation of the given number of nanoseconds.
50.Simple Tokenizer
51.split By Space
52.Pad Front
53.Count Occurrences
54.Padding Left
55.captalize Words
56.Tokenizer Utils
57.Returns space padding
58.Normalise Whitespace
59.Removes unwanted blank characters
60.Removes unwanted backslashes characters
61.equals Ignore Case
62.A method to decode/encode quoted printable encoded data
63.Title Name Parser
64.Split Camal Case
65.Split and combine by token
66.Shorten text for display in lists etc.