Unsupported library that attempts to punch holes through NAT
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Utility.java 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * This file is part of JSTUN.
  3. *
  4. * Copyright (c) 2005 Thomas King <king@t-king.de> - All rights
  5. * reserved.
  6. *
  7. * This software is licensed under either the GNU Public License (GPL),
  8. * or the Apache 2.0 license. Copies of both license agreements are
  9. * included in this distribution.
  10. */
  11. package de.javawi.jstun.util;
  12. public class Utility {
  13. public static final byte integerToOneByte(int value) throws UtilityException {
  14. if ((value > Math.pow(2,15)) || (value < 0)) {
  15. throw new UtilityException("Integer value " + value + " is larger than 2^15");
  16. }
  17. return (byte)(value & 0xFF);
  18. }
  19. public static final byte[] integerToTwoBytes(int value) throws UtilityException {
  20. byte[] result = new byte[2];
  21. if ((value > Math.pow(2,31)) || (value < 0)) {
  22. throw new UtilityException("Integer value " + value + " is larger than 2^31");
  23. }
  24. result[0] = (byte)((value >>> 8) & 0xFF);
  25. result[1] = (byte)(value & 0xFF);
  26. return result;
  27. }
  28. public static final byte[] integerToFourBytes(int value) throws UtilityException {
  29. byte[] result = new byte[4];
  30. if ((value > Math.pow(2,63)) || (value < 0)) {
  31. throw new UtilityException("Integer value " + value + " is larger than 2^63");
  32. }
  33. result[0] = (byte)((value >>> 24) & 0xFF);
  34. result[1] = (byte)((value >>> 16) & 0xFF);
  35. result[2] = (byte)((value >>> 8) & 0xFF);
  36. result[3] = (byte)(value & 0xFF);
  37. return result;
  38. }
  39. public static final int oneByteToInteger(byte value) throws UtilityException {
  40. return (int)value & 0xFF;
  41. }
  42. public static final int twoBytesToInteger(byte[] value) throws UtilityException {
  43. if (value.length < 2) {
  44. throw new UtilityException("Byte array too short!");
  45. }
  46. int temp0 = value[0] & 0xFF;
  47. int temp1 = value[1] & 0xFF;
  48. return ((temp0 << 8) + temp1);
  49. }
  50. public static final long fourBytesToLong(byte[] value) throws UtilityException {
  51. if (value.length < 4) {
  52. throw new UtilityException("Byte array too short!");
  53. }
  54. int temp0 = value[0] & 0xFF;
  55. int temp1 = value[1] & 0xFF;
  56. int temp2 = value[2] & 0xFF;
  57. int temp3 = value[3] & 0xFF;
  58. return (((long)temp0 << 24) + (temp1 << 16) + (temp2 << 8) + temp3);
  59. }
  60. }