「bcd解码JAVA」BCH解码

博主:adminadmin 2022-11-29 19:20:08 54

今天给各位分享bcd解码JAVA的知识,其中也会对BCH解码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何将4字节浮点数转换为BCD码?

四字节16进制数可转换为四个二进制字节(Bytes),从而使用Api函数来处理成单精度浮点数。

以下用VB代码处理。

VB有专门的API函数CopyMemory能处理2-10进制浮点数转换和10-2进制浮点数转换。

下列代码演示了10进制Single(单精度浮点型转为16进制字符显示的浮点数和其相反运算:

Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub BinToSin_Click()

Dim sinStr As String

Dim sinSj As Single

Dim Buffer(3) As Byte

Dim i As Integer

sinStr = Text2

For i = 1 To Len(Text2) Step 2

Buffer((7 - i) / 2) = Val("H" Mid(sinStr, i, 2))

Next

CopyMemory ByVal VarPtr(sinSj), ByVal VarPtr(Buffer(0)), 4

Text3 = sinSj

End Sub

Private Sub SinToBin_Click()

Dim i As Integer

Dim hexData As String

Dim a As Single

Dim Buffer(3) As Byte

a = Val(Text1)

CopyMemory Buffer(0), a, 4

For i = 0 To 3

If Len(Hex(Buffer(i))) = 1 Then

hexData = "0" Hex(Buffer(i)) + hexData

Else

hexData = Hex(Buffer(i)) + hexData

End If

Next

Text2 = hexData

End Sub

需要注意的事项是这四字节的高低字节排序,不能搞错。

VB的Single 数据类型

Single(单精度浮点型)变量存储为 IEEE 32 位(4 个字节)浮点数值的形式,它的范围在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38。Single 的类型声明字符为感叹号 (!)。

在内存以32位二进制形式存在:

XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX

第1位为符号位

第2-9位为阶码位

第10-32位为2进制小数尾值

即F2 ^ n * 1. XXXXXXX XXXXXXXX XXXXXXXX

其中

F为正号或负号(首为为0正数,首位为1负数

n为2-9位组成的BYTE数据值

XXXXXXX XXXXXXXX XXXXXXXX为尾数

java中如何实现BCD码字符串与16进制字符串的互转

nt main(void)

4{

5 unsigned char array[4] = {"0x0","0x0","0x02","0xe7"};

6 unsigned long num;

7 num = 0;

8 for(int i=0; isizeof(array); i++)

9 {

10 num=8;

11 num |= array[i];

12 }

13 printf("num = %d",num);

14 return 0;

15

16}

二进制,字节数组,字符,十六进制,BCD编码转换

* 把16进制字符串转换成字节数组

* @param hex

* @return

*/

public static byte[] hexStringToByte(String hex) {

int len = (hex.length() / 2);

byte[] result = new byte[len];

char[] achar = hex.toCharArray();

for (int i = 0; i len; i++) {

int pos = i * 2;

result[i] = (byte) (toByte(achar[pos]) 4 | toByte(achar[pos + 1]));

}

return result;

}

private static byte toByte(char c) {

byte b = (byte) "0123456789ABCDEF".indexOf(c);

return b;

}

public static final String bytesToHexString(byte[] bArray) {

StringBuffer sb = new StringBuffer(bArray.length);

String sTemp;

for (int i = 0; i bArray.length; i++) {

sTemp = Integer.toHexString(0xFF bArray[i]);

if (sTemp.length() 2)

sb.append(0);

sb.append(sTemp.toUpperCase());

}

return sb.toString();

}

public static final Object bytesToObject(byte[] bytes) throws IOException, ClassNotFoundException {

ByteArrayInputStream in = new ByteArrayInputStream(bytes);

ObjectInputStream oi = new ObjectInputStream(in);

Object o = oi.readObject();

oi.close();

return o;

}

public static final byte[] objectToBytes(Serializable s) throws IOException {

ByteArrayOutputStream out = new ByteArrayOutputStream();

ObjectOutputStream ot = new ObjectOutputStream(out);

ot.writeObject(s);

ot.flush();

ot.close();

return out.toByteArray();

}

public static final String objectToHexString(Serializable s) throws IOException{

return bytesToHexString(objectToBytes(s));

}

public static final Object hexStringToObject(String hex) throws IOException, ClassNotFoundException{

return bytesToObject(hexStringToByte(hex));

}

public static String bcd2Str(byte[] bytes){

StringBuffer temp=new StringBuffer(bytes.length*2);

for(int i=0;ibytes.length;i++){

temp.append((byte)((bytes[i] 0xf0)4));

temp.append((byte)(bytes[i] 0x0f));

}

return temp.toString().substring(0,1).equalsIgnoreCase("0")?temp.toString().substring(1):temp.toString();

}

public static byte[] str2Bcd(String asc) {

int len = asc.length();

int mod = len % 2;

if (mod != 0) {

asc = "0" + asc;

len = asc.length();

}

byte abt[] = new byte[len];

if (len = 2) {

len = len / 2;

}

byte bbt[] = new byte[len];

abt = asc.getBytes();

int j, 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;

}

int a = (j 4) + k;

byte b = (byte) a;

bbt[p] = b;

}

return bbt;

}

public static String BCD2ASC(byte[] bytes) {

StringBuffer temp = new StringBuffer(bytes.length * 2);

for (int i = 0; i bytes.length; i++) {

int h = ((bytes[i] 0xf0) 4);

int l = (bytes[i] 0x0f);

temp.append(BToA[h]).append( BToA[l]);

}

return temp.toString() ;

}

public static String MD5EncodeToHex(String origin) {

return bytesToHexString(MD5Encode(origin));

}

public static byte[] MD5Encode(String origin){

return MD5Encode(origin.getBytes());

}

public static byte[] MD5Encode(byte[] bytes){

MessageDigest md=null;

try {

md = MessageDigest.getInstance("MD5");

return md.digest(bytes);

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

return new byte[0];

}

}

//关于byte: signed byte 把 0x00 ~ 0xff 映射成范围 0~127和 -128~-1 两段,比较简单的办法用 (b+256)%256的办法令其值回到0~255,或者用0xff并赋给一个int

js向后台java发送url的特殊符号

后台 java.net.URLDecoder解码,

前台JS中 encodeURI 两次,即

encodeURI(encodeURI(url)) 试一下吧

二进制与BCD码之间的转换

一般来说,默认的BCD码是8421码,也就是说,使用4位二进制数来表示10位0-9的1位十进制数。从左到右的重量是8,4,2,1。

以十进制37为例,进行转换:

3=2+1=(8421码)0011,7=4+2+1=(8421码)0111。

所以37转换成8421码为0011 0111。

扩展资料:

BCD码使用四位来存储十进制数,这使得二进制和十进制之间的转换很快,这种编码技术最常用于会计系统的设计,因为会计系统通常需要精确地计算一长串数字。

与一般的浮点计数方法相比,BCD码不仅可以节省数值精度,而且可以节省浮点运算时间,此外,BCD编码也常用于其他需要高精度的计算。

BCD码的最高二进制数是符号位,负数的符号位是1,正数是0,16位BCD码的范围是-999-+999。

BCD代码没有单独的表示,而是借用了十六进制表示,因此很容易混淆,一般来说,有两种判断方法:

1、看看数据的来源和目的,BCD码通常用于输入和输出,例如,来自拨号开关的数据是BCD码,它被发送到电梯层的解码芯片。

2、请参阅手册,例如,数据类型“日期和时间”中的日期和时间值是BCD代码,计数器的预设值PV和当前计数值CV BCD是BCD代码。

参考资料来源:

百度百科-BCD码

百度百科-8421编码

java读取文件内容并生成压缩BCD格式

您的排序与zip排序不一样。

所以第一步应该得到所有名称,然后再按照新的顺序来读

如果只是解压到某处,新的顺序一点用处都没有!

java 如何判断一个byte型的数为BCD码

你将0~9的数字也转换成同样类型的数据,并且放在一个map中,用Byte的BCD嘛对map取值,如果取map返回的对象不为null,就说明达到了你的效果了

bcd解码JAVA的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于BCH解码、bcd解码JAVA的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。