1

我正在做一个模糊媒体播放器的项目。我用 Java 编写了文件生成器,并从用 C 编写的原始压缩代码转换了 CRC 生成器。我可以用 DataOutputStream 很好地写入数据,但我不知道如何在 java 中将数据作为无符号字符数组发送。在 C 中,这是一个非常简单的过程。我已经非常彻底地搜索了一个解决方案,我发现的最佳解决方案是将数据发送到 C 并让 C 返回一个 CRC。我可能只是没有正确搜索,因为我对这些东西很不熟悉。非常感谢您的帮助。

4

3 回答 3

6

你肯定想要一个字节[]。“字节”相当于 C 中的有符号字符。Java 的“字符”是一个 16 位的 unicode 值,根本不等价。

如果是为了模糊测试,除非您使用的 CRC 函数有什么特别之处,否则我想您可以简单地使用:

import java.util.Random;
Random randgen = new Random();

byte[] fuzzbytes = new byte[numbytes];
randgen.nextBytes(fuzzbytes);
outstream.write(fuzzbytes, 0, numbytes);
于 2009-03-15T23:01:07.593 回答
2

我怀疑你想对角色做任何事情。我在您的描述中看不到任何暗示文本操作的内容,这就是您对字符所做的事情。

您想使用字节数组。在 Java 中对字节进行签名有点痛苦,但字节数组就是你所拥有的——只需使用位模式而不是将它们视为实际数字,并仔细检查每个操作。

于 2009-03-15T22:53:53.883 回答
0

大多数 CRC 运算符主要使用按位移位和 XOR。这些在不支持无符号整数原语的 Java 上应该可以正常工作。如果您需要其他算术才能正常工作,您可以尝试转换为short

于 2009-03-15T22:54:23.677 回答