Java无符号字符数组

时间:2009-03-15 22:47:17

标签: java crc

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

3 个答案:

答案 0 :(得分:6)

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

如果它是用于模糊测试,除非你正在使用的CRC功能有什么特别之处,我想你可以简单地使用:

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

byte[] fuzzbytes = new byte[numbytes];
randgen.nextBytes(fuzzbytes);
outstream.write(fuzzbytes, 0, numbytes);

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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