summaryrefslogtreecommitdiff
path: root/bcprov/src/main/java/org/bouncycastle/util/Pack.java
diff options
context:
space:
mode:
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/util/Pack.java')
-rw-r--r--bcprov/src/main/java/org/bouncycastle/util/Pack.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/util/Pack.java b/bcprov/src/main/java/org/bouncycastle/util/Pack.java
index 94ba17b1..82b02ea5 100644
--- a/bcprov/src/main/java/org/bouncycastle/util/Pack.java
+++ b/bcprov/src/main/java/org/bouncycastle/util/Pack.java
@@ -5,6 +5,13 @@ package org.bouncycastle.util;
*/
public abstract class Pack
{
+ public static short bigEndianToShort(byte[] bs, int off)
+ {
+ int n = (bs[ off] & 0xff) << 8;
+ n |= (bs[++off] & 0xff);
+ return (short)n;
+ }
+
public static int bigEndianToInt(byte[] bs, int off)
{
int n = bs[ off] << 24;
@@ -99,6 +106,13 @@ public abstract class Pack
}
}
+ public static short littleEndianToShort(byte[] bs, int off)
+ {
+ int n = bs[ off] & 0xff;
+ n |= (bs[++off] & 0xff) << 8;
+ return (short)n;
+ }
+
public static int littleEndianToInt(byte[] bs, int off)
{
int n = bs[ off] & 0xff;
@@ -126,6 +140,30 @@ public abstract class Pack
}
}
+ public static int[] littleEndianToInt(byte[] bs, int off, int count)
+ {
+ int[] ns = new int[count];
+ for (int i = 0; i < ns.length; ++i)
+ {
+ ns[i] = littleEndianToInt(bs, off);
+ off += 4;
+ }
+ return ns;
+ }
+
+ public static byte[] shortToLittleEndian(short n)
+ {
+ byte[] bs = new byte[2];
+ shortToLittleEndian(n, bs, 0);
+ return bs;
+ }
+
+ public static void shortToLittleEndian(short n, byte[] bs, int off)
+ {
+ bs[ off] = (byte)(n );
+ bs[++off] = (byte)(n >>> 8);
+ }
+
public static byte[] intToLittleEndian(int n)
{
byte[] bs = new byte[4];