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