Unsupported library that attempts to punch holes through NAT
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

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. }