1

我正在将一个好的旧 Clipper xbase 程序转换/迁移到 Java。由于旧程序仍在运行,因此在将 Java 中的数据写入数据库时​​,我需要兼容。它工作得非常好,直到现在。

为此,我需要 Clipper 中的 i2bin 和 bin2i 函数在 Java 中运行。

有关 i2Bin,请参见此处:http: //www.marinas-gui.org/projects/harbour_manual/i2bin.htm

我可以通过以下方式读取剪裁器写入的 i2bin 数据:cData 是一个字符串,其中包含在第一个 char 之后编码为 char 的 int:

char [] array = cData .substring(1).toCharArray();
int nLen = (int) array [0];

但我无法在 Java 中编写正确的 int 编码为 char。所以我得到了一个

int len = 8;
char clen = (char) len;

我得到一个 '\b' 但只有一个字符。裁剪器函数 bin2i 无法正确解释它。如果我在字符上添加一个空格

String data = clen + " " 

我得到了 bin2i 的正确长度,但它不再是长度 8。也许它是通过 Ascii 32 编码的?

无论如何,我怎样才能做到正确?

问候,彼得

4

1 回答 1

0

你要这个:

public byte[] i2bin(short i)
{
 byte[] ret = new byte[2];
 ret[0] = (byte)(i & 0xff);
 ret[1] = (byte)((i>>>8) & 0xff);
 return ret;
}

不要使用字符或字符串,因为它们依赖于语言环境/字符集

于 2016-09-23T13:54:25.137 回答