我有一个使用字节数组的Java函数,C没有这种数据类型,我如何用C编写该函数。
我不太擅长 C,这对我来说有点困惑,我有字节 hash1 和字节 hash2。
它给了我java中int的距离,为什么我需要Java中Char的字节。我知道问题标题看起来重复,但是没有明确的解释。
Java 代码:
public static int distance(byte[] hash1, byte[] hash2) {
int distance = 0;
for (int i = 0; i < hash1.length && i < hash2.length; i++)
{
distance += ((hash2[i] & 0xFF) - (hash1[i] & 0xFF))*((hash2[i] & 0xFF) - (hash1[i] & 0xFF));
}
return distance;
}
最佳答案
在 C 中,您需要 unsigned char
。您还需要将每个数组的长度作为单独的参数传递。
public static int distance(unsigned char hash1[], unsigned char hash2[], int len1, len2) {
int distance = 0;
for (int i = 0; i < len1 && i < len2; i++)
{
distance += ((hash2[i] & 0xFF) - (hash1[i] & 0xFF))*
((hash2[i] & 0xFF) - (hash1[i] & 0xFF));
}
return distance;
}
关于Java 中的 Java 字节数组等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53403552/