tbel: add parseHexToLong, Float, Double
This commit is contained in:
parent
59dfb4f4e1
commit
f15d84e44a
@ -80,18 +80,22 @@ public class TbUtils {
|
|||||||
String.class)));
|
String.class)));
|
||||||
parserConfig.addImport("parseHexToInt", new MethodStub(TbUtils.class.getMethod("parseHexToInt",
|
parserConfig.addImport("parseHexToInt", new MethodStub(TbUtils.class.getMethod("parseHexToInt",
|
||||||
String.class, boolean.class)));
|
String.class, boolean.class)));
|
||||||
|
parserConfig.addImport("parseBytesToInt", new MethodStub(TbUtils.class.getMethod("parseBytesToInt",
|
||||||
|
List.class, int.class, int.class)));
|
||||||
|
parserConfig.addImport("parseBytesToInt", new MethodStub(TbUtils.class.getMethod("parseBytesToInt",
|
||||||
|
List.class, int.class, int.class, boolean.class)));
|
||||||
|
parserConfig.addImport("parseBytesToInt", new MethodStub(TbUtils.class.getMethod("parseBytesToInt",
|
||||||
|
byte[].class, int.class, int.class)));
|
||||||
|
parserConfig.addImport("parseBytesToInt", new MethodStub(TbUtils.class.getMethod("parseBytesToInt",
|
||||||
|
byte[].class, int.class, int.class, boolean.class)));
|
||||||
|
parserConfig.addImport("parseLittleEndianHexToLong", new MethodStub(TbUtils.class.getMethod("parseLittleEndianHexToLong",
|
||||||
|
String.class)));
|
||||||
|
parserConfig.addImport("parseBigEndianHexToLong", new MethodStub(TbUtils.class.getMethod("parseBigEndianHexToLong",
|
||||||
|
String.class)));
|
||||||
parserConfig.addImport("parseHexToLong", new MethodStub(TbUtils.class.getMethod("parseHexToLong",
|
parserConfig.addImport("parseHexToLong", new MethodStub(TbUtils.class.getMethod("parseHexToLong",
|
||||||
String.class)));
|
String.class)));
|
||||||
parserConfig.addImport("parseHexToLong", new MethodStub(TbUtils.class.getMethod("parseHexToLong",
|
parserConfig.addImport("parseHexToLong", new MethodStub(TbUtils.class.getMethod("parseHexToLong",
|
||||||
String.class, boolean.class)));
|
String.class, boolean.class)));
|
||||||
parserConfig.addImport("parseBytesToInt", new MethodStub(TbUtils.class.getMethod("parseBytesToInt",
|
|
||||||
List.class, int.class, int.class)));
|
|
||||||
parserConfig.addImport("parseBytesToInt", new MethodStub(TbUtils.class.getMethod("parseBytesToInt",
|
|
||||||
List.class, int.class, int.class, boolean.class)));
|
|
||||||
parserConfig.addImport("parseBytesToInt", new MethodStub(TbUtils.class.getMethod("parseBytesToInt",
|
|
||||||
byte[].class, int.class, int.class)));
|
|
||||||
parserConfig.addImport("parseBytesToInt", new MethodStub(TbUtils.class.getMethod("parseBytesToInt",
|
|
||||||
byte[].class, int.class, int.class, boolean.class)));
|
|
||||||
parserConfig.addImport("parseBytesToLong", new MethodStub(TbUtils.class.getMethod("parseBytesToLong",
|
parserConfig.addImport("parseBytesToLong", new MethodStub(TbUtils.class.getMethod("parseBytesToLong",
|
||||||
List.class, int.class, int.class)));
|
List.class, int.class, int.class)));
|
||||||
parserConfig.addImport("parseBytesToLong", new MethodStub(TbUtils.class.getMethod("parseBytesToLong",
|
parserConfig.addImport("parseBytesToLong", new MethodStub(TbUtils.class.getMethod("parseBytesToLong",
|
||||||
@ -100,6 +104,14 @@ public class TbUtils {
|
|||||||
byte[].class, int.class, int.class)));
|
byte[].class, int.class, int.class)));
|
||||||
parserConfig.addImport("parseBytesToLong", new MethodStub(TbUtils.class.getMethod("parseBytesToLong",
|
parserConfig.addImport("parseBytesToLong", new MethodStub(TbUtils.class.getMethod("parseBytesToLong",
|
||||||
byte[].class, int.class, int.class, boolean.class)));
|
byte[].class, int.class, int.class, boolean.class)));
|
||||||
|
parserConfig.addImport("parseLittleEndianHexToFloat", new MethodStub(TbUtils.class.getMethod("parseLittleEndianHexToFloat",
|
||||||
|
String.class)));
|
||||||
|
parserConfig.addImport("parseBigEndianHexToFloat", new MethodStub(TbUtils.class.getMethod("parseBigEndianHexToFloat",
|
||||||
|
String.class)));
|
||||||
|
parserConfig.addImport("parseHexToFloat", new MethodStub(TbUtils.class.getMethod("parseHexToFloat",
|
||||||
|
String.class)));
|
||||||
|
parserConfig.addImport("parseHexToFloat", new MethodStub(TbUtils.class.getMethod("parseHexToFloat",
|
||||||
|
String.class, boolean.class)));
|
||||||
parserConfig.addImport("parseBytesToFloat", new MethodStub(TbUtils.class.getMethod("parseBytesToFloat",
|
parserConfig.addImport("parseBytesToFloat", new MethodStub(TbUtils.class.getMethod("parseBytesToFloat",
|
||||||
byte[].class, int.class, boolean.class)));
|
byte[].class, int.class, boolean.class)));
|
||||||
parserConfig.addImport("parseBytesToFloat", new MethodStub(TbUtils.class.getMethod("parseBytesToFloat",
|
parserConfig.addImport("parseBytesToFloat", new MethodStub(TbUtils.class.getMethod("parseBytesToFloat",
|
||||||
@ -108,6 +120,14 @@ public class TbUtils {
|
|||||||
List.class, int.class, boolean.class)));
|
List.class, int.class, boolean.class)));
|
||||||
parserConfig.addImport("parseBytesToFloat", new MethodStub(TbUtils.class.getMethod("parseBytesToFloat",
|
parserConfig.addImport("parseBytesToFloat", new MethodStub(TbUtils.class.getMethod("parseBytesToFloat",
|
||||||
List.class, int.class)));
|
List.class, int.class)));
|
||||||
|
parserConfig.addImport("parseLittleEndianHexToDouble", new MethodStub(TbUtils.class.getMethod("parseLittleEndianHexToDouble",
|
||||||
|
String.class)));
|
||||||
|
parserConfig.addImport("parseBigEndianHexToDouble", new MethodStub(TbUtils.class.getMethod("parseBigEndianHexToDouble",
|
||||||
|
String.class)));
|
||||||
|
parserConfig.addImport("parseHexToDouble", new MethodStub(TbUtils.class.getMethod("parseHexToDouble",
|
||||||
|
String.class)));
|
||||||
|
parserConfig.addImport("parseHexToDouble", new MethodStub(TbUtils.class.getMethod("parseHexToDouble",
|
||||||
|
String.class, boolean.class)));
|
||||||
parserConfig.addImport("parseBytesToDouble", new MethodStub(TbUtils.class.getMethod("parseBytesToDouble",
|
parserConfig.addImport("parseBytesToDouble", new MethodStub(TbUtils.class.getMethod("parseBytesToDouble",
|
||||||
byte[].class, int.class)));
|
byte[].class, int.class)));
|
||||||
parserConfig.addImport("parseBytesToDouble", new MethodStub(TbUtils.class.getMethod("parseBytesToDouble",
|
parserConfig.addImport("parseBytesToDouble", new MethodStub(TbUtils.class.getMethod("parseBytesToDouble",
|
||||||
@ -287,17 +307,7 @@ public class TbUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int parseHexToInt(String hex, boolean bigEndian) {
|
public static int parseHexToInt(String hex, boolean bigEndian) {
|
||||||
int length = hex.length();
|
byte[] data = prepareHexToBytesNumber(hex, 8);
|
||||||
if (length > 8) {
|
|
||||||
throw new IllegalArgumentException("Hex string is too large. Maximum 8 symbols allowed.");
|
|
||||||
}
|
|
||||||
if (length % 2 > 0) {
|
|
||||||
throw new IllegalArgumentException("Hex string must be even-length.");
|
|
||||||
}
|
|
||||||
byte[] data = new byte[length / 2];
|
|
||||||
for (int i = 0; i < length; i += 2) {
|
|
||||||
data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4) + Character.digit(hex.charAt(i + 1), 16));
|
|
||||||
}
|
|
||||||
return parseBytesToInt(data, 0, data.length, bigEndian);
|
return parseBytesToInt(data, 0, data.length, bigEndian);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -306,16 +316,55 @@ public class TbUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static long parseBigEndianHexToLong(String hex) {
|
public static long parseBigEndianHexToLong(String hex) {
|
||||||
return parseHexToInt(hex, true);
|
return parseHexToLong(hex, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long parseHexToLong(String hex) {
|
public static long parseHexToLong(String hex) {
|
||||||
return parseHexToInt(hex, true);
|
return parseHexToLong(hex, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long parseHexToLong(String hex, boolean bigEndian) {
|
public static long parseHexToLong(String hex, boolean bigEndian) {
|
||||||
|
byte[] data = prepareHexToBytesNumber(hex, 16);
|
||||||
|
return parseBytesToLong(data, 0, data.length, bigEndian);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float parseLittleEndianHexToFloat(String hex) {
|
||||||
|
return parseHexToFloat(hex, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float parseBigEndianHexToFloat(String hex) {
|
||||||
|
return parseHexToFloat(hex, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float parseHexToFloat(String hex) {
|
||||||
|
return parseHexToFloat(hex, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float parseHexToFloat(String hex, boolean bigEndian) {
|
||||||
|
byte[] data = prepareHexToBytesNumber(hex, 8);
|
||||||
|
return parseBytesToFloat(data, 0, bigEndian);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double parseLittleEndianHexToDouble(String hex) {
|
||||||
|
return parseHexToDouble(hex, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double parseBigEndianHexToDouble(String hex) {
|
||||||
|
return parseHexToDouble(hex, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double parseHexToDouble(String hex) {
|
||||||
|
return parseHexToDouble(hex, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double parseHexToDouble(String hex, boolean bigEndian) {
|
||||||
|
byte[] data = prepareHexToBytesNumber(hex, 16);
|
||||||
|
return parseBytesToDouble(data, 0, bigEndian);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static byte[] prepareHexToBytesNumber(String hex, int len) {
|
||||||
int length = hex.length();
|
int length = hex.length();
|
||||||
if (length > 16) {
|
if (length > len) {
|
||||||
throw new IllegalArgumentException("Hex string is too large. Maximum 8 symbols allowed.");
|
throw new IllegalArgumentException("Hex string is too large. Maximum 8 symbols allowed.");
|
||||||
}
|
}
|
||||||
if (length % 2 > 0) {
|
if (length % 2 > 0) {
|
||||||
@ -325,7 +374,7 @@ public class TbUtils {
|
|||||||
for (int i = 0; i < length; i += 2) {
|
for (int i = 0; i < length; i += 2) {
|
||||||
data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4) + Character.digit(hex.charAt(i + 1), 16));
|
data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4) + Character.digit(hex.charAt(i + 1), 16));
|
||||||
}
|
}
|
||||||
return parseBytesToLong(data, 0, data.length, bigEndian);
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ExecutionArrayList<Byte> hexToBytes(ExecutionContext ctx, String hex) {
|
public static ExecutionArrayList<Byte> hexToBytes(ExecutionContext ctx, String hex) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user