remove BCD

This commit is contained in:
Looly
2022-10-24 19:37:50 +08:00
parent 79e7e51727
commit 106e465014
43 changed files with 53 additions and 271 deletions

View File

@@ -1,133 +0,0 @@
package cn.hutool.core.codec;
import cn.hutool.core.lang.Assert;
/**
* BCD码Binary-Coded Decimal亦称二进码十进数或二-十进制代码<br>
* BCD码这种编码形式利用了四个位元来储存一个十进制的数码使二进制和十进制之间的转换得以快捷的进行<br>
* see <a href="http://cuisuqiang.iteye.com/blog/1429956">http://cuisuqiang.iteye.com/blog/1429956</a>
*
* @author Looly
*/
public class BCD {
/**
* 字符串转BCD码
*
* @param asc ASCII字符串
* @return BCD
*/
public static byte[] strToBcd(String asc) {
Assert.notNull(asc, "ASCII must not be null!");
int len = asc.length();
final int mod = len % 2;
if (mod != 0) {
asc = "0" + asc;
len = asc.length();
}
final byte[] abt;
if (len >= 2) {
len >>= 1;
}
final byte[] bbt;
bbt = new byte[len];
abt = asc.getBytes();
int j;
int k;
for (int p = 0; p < asc.length() / 2; p++) {
if ((abt[2 * p] >= '0') && (abt[2 * p] <= '9')) {
j = abt[2 * p] - '0';
} else if ((abt[2 * p] >= 'a') && (abt[2 * p] <= 'z')) {
j = abt[2 * p] - 'a' + 0x0a;
} else {
j = abt[2 * p] - 'A' + 0x0a;
}
if ((abt[2 * p + 1] >= '0') && (abt[2 * p + 1] <= '9')) {
k = abt[2 * p + 1] - '0';
} else if ((abt[2 * p + 1] >= 'a') && (abt[2 * p + 1] <= 'z')) {
k = abt[2 * p + 1] - 'a' + 0x0a;
} else {
k = abt[2 * p + 1] - 'A' + 0x0a;
}
final int a = (j << 4) + k;
final byte b = (byte) a;
bbt[p] = b;
}
return bbt;
}
/**
* ASCII转BCD
*
* @param ascii ASCII byte数组
* @return BCD
*/
public static byte[] ascToBcd(final byte[] ascii) {
Assert.notNull(ascii, "Ascii must be not null!");
return ascToBcd(ascii, ascii.length);
}
/**
* ASCII转BCD
*
* @param ascii ASCII byte数组
* @param ascLength 长度
* @return BCD
*/
public static byte[] ascToBcd(final byte[] ascii, final int ascLength) {
Assert.notNull(ascii, "Ascii must be not null!");
final byte[] bcd = new byte[ascLength / 2];
int j = 0;
for (int i = 0; i < (ascLength + 1) / 2; i++) {
bcd[i] = ascToBcd(ascii[j++]);
bcd[i] = (byte) (((j >= ascLength) ? 0x00 : ascToBcd(ascii[j++])) + (bcd[i] << 4));
}
return bcd;
}
/**
* BCD转ASCII字符串
*
* @param bytes BCD byte数组
* @return ASCII字符串
*/
public static String bcdToStr(final byte[] bytes) {
Assert.notNull(bytes, "Bcd bytes must be not null!");
final char[] temp = new char[bytes.length * 2];
char val;
for (int i = 0; i < bytes.length; i++) {
val = (char) (((bytes[i] & 0xf0) >> 4) & 0x0f);
temp[i * 2] = (char) (val > 9 ? val + 'A' - 10 : val + '0');
val = (char) (bytes[i] & 0x0f);
temp[i * 2 + 1] = (char) (val > 9 ? val + 'A' - 10 : val + '0');
}
return new String(temp);
}
//----------------------------------------------------------------- Private method start
/**
* 转换单个byte为BCD
*
* @param asc ACSII
* @return BCD
*/
private static byte ascToBcd(final byte asc) {
final byte bcd;
if ((asc >= '0') && (asc <= '9')) {
bcd = (byte) (asc - '0');
} else if ((asc >= 'A') && (asc <= 'F')) {
bcd = (byte) (asc - 'A' + 10);
} else if ((asc >= 'a') && (asc <= 'f')) {
bcd = (byte) (asc - 'a' + 10);
} else {
bcd = (byte) (asc - 48);
}
return bcd;
}
//----------------------------------------------------------------- Private method end
}

View File

@@ -1,5 +1,7 @@
package cn.hutool.core.codec;
package cn.hutool.core.codec.BaseN;
import cn.hutool.core.codec.Decoder;
import cn.hutool.core.codec.Encoder;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.text.StrUtil;

View File

@@ -1,4 +1,4 @@
package cn.hutool.core.codec;
package cn.hutool.core.codec.BaseN;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.text.StrUtil;

View File

@@ -1,4 +1,7 @@
package cn.hutool.core.codec;
package cn.hutool.core.codec.BaseN;
import cn.hutool.core.codec.Decoder;
import cn.hutool.core.codec.Encoder;
import java.util.Arrays;

View File

@@ -1,4 +1,4 @@
package cn.hutool.core.codec;
package cn.hutool.core.codec.BaseN;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.exceptions.ValidateException;

View File

@@ -1,5 +1,7 @@
package cn.hutool.core.codec;
package cn.hutool.core.codec.BaseN;
import cn.hutool.core.codec.Decoder;
import cn.hutool.core.codec.Encoder;
import cn.hutool.core.text.StrUtil;
import java.util.Arrays;

View File

@@ -1,4 +1,4 @@
package cn.hutool.core.codec;
package cn.hutool.core.codec.BaseN;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;

View File

@@ -1,5 +1,7 @@
package cn.hutool.core.codec;
package cn.hutool.core.codec.BaseN;
import cn.hutool.core.codec.Decoder;
import cn.hutool.core.codec.Encoder;
import cn.hutool.core.util.ArrayUtil;
import java.io.ByteArrayOutputStream;

View File

@@ -1,4 +1,4 @@
package cn.hutool.core.codec;
package cn.hutool.core.codec.BaseN;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;

View File

@@ -1,5 +1,6 @@
package cn.hutool.core.codec;
package cn.hutool.core.codec.BaseN;
import cn.hutool.core.codec.Decoder;
import cn.hutool.core.lang.mutable.MutableInt;
import cn.hutool.core.util.ArrayUtil;
@@ -10,7 +11,7 @@ import cn.hutool.core.util.ArrayUtil;
* @author looly
*
*/
public class Base64Decoder implements Decoder<byte[], byte[]>{
public class Base64Decoder implements Decoder<byte[], byte[]> {
public static Base64Decoder INSTANCE = new Base64Decoder();

View File

@@ -1,5 +1,6 @@
package cn.hutool.core.codec;
import cn.hutool.core.codec.BaseN.Base16Codec;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.util.CharUtil;
import cn.hutool.core.util.CharsetUtil;

View File

@@ -1,5 +1,6 @@
package cn.hutool.core.codec;
import cn.hutool.core.codec.BaseN.Base16Codec;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.text.CharPool;
import cn.hutool.core.text.StrUtil;

View File

@@ -1,6 +1,6 @@
package cn.hutool.core.convert.impl;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.codec.BaseN.Base64;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.convert.AbstractConverter;
import cn.hutool.core.convert.Convert;

View File

@@ -1,18 +0,0 @@
package cn.hutool.core.codec;
import org.junit.Assert;
import org.junit.Test;
public class BCDTest {
@Test
public void bcdTest(){
final String strForTest = "123456ABCDEF";
//转BCD
final byte[] bcd = BCD.strToBcd(strForTest);
final String str = BCD.bcdToStr(bcd);
//解码BCD
Assert.assertEquals(strForTest, str);
}
}

View File

@@ -1,5 +1,6 @@
package cn.hutool.core.codec;
import cn.hutool.core.codec.BaseN.Base32;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.text.StrUtil;
import org.junit.Assert;

View File

@@ -1,5 +1,6 @@
package cn.hutool.core.codec;
import cn.hutool.core.codec.BaseN.Base58;
import org.junit.Assert;
import org.junit.Test;

View File

@@ -1,5 +1,6 @@
package cn.hutool.core.codec;
import cn.hutool.core.codec.BaseN.Base62;
import cn.hutool.core.util.RandomUtil;
import org.junit.Assert;
import org.junit.Test;

View File

@@ -1,5 +1,6 @@
package cn.hutool.core.codec;
import cn.hutool.core.codec.BaseN.Base64;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.text.StrUtil;