Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我有一个C#DNS加密算法现在想把它改成java,但是java字节是-128~127,C#是0~255_Java - Fatal编程技术网

我有一个C#DNS加密算法现在想把它改成java,但是java字节是-128~127,C#是0~255

我有一个C#DNS加密算法现在想把它改成java,但是java字节是-128~127,C#是0~255,java,Java,您的输入值都在0到127的范围内,因此没有问题 在输出上,但仅在完成所有计算后,您需要将字节值转换为int值,同时将两个补码负值转换为正值: java outData[i >> 3] and c# different 如果您按照上述方法输出数组的每个元素,您应该会发现得到的值与C代码匹配。您没有描述代码应该做什么(例如给出一些示例数字),因此我只能猜测 对于无符号数据,使用处理符号位的操作(>)是没有意义的,可能需要的操作是逻辑移位(>>) 这里有更多详细信息:我认为您需要使

您的输入值都在0到127的范围内,因此没有问题

在输出上,但仅在完成所有计算后,您需要将
字节
值转换为
int
值,同时将两个补码负值转换为正值:

java  outData[i >> 3]  and c#  different

如果您按照上述方法输出数组的每个元素,您应该会发现得到的值与C代码匹配。

您没有描述代码应该做什么(例如给出一些示例数字),因此我只能猜测

对于无符号数据,使用处理符号位的操作(
>
)是没有意义的,可能需要的操作是逻辑移位(
>>


这里有更多详细信息:

我认为您需要使用操作符>>>而不是>>,当您的数字高于127时,可能会出现问题,它会变成负数。 好吧,这可能会帮助你:


干杯

请显示示例输入和所需输出。没有任何右移是在“负数”上,因此没有必要使用
>>
而不是
>
@Alnitak:您是对的,对于给定的输入值没有区别。我假设代码在全字节范围内应该是合适的。虽然通常在处理“未签名”数据时不使用
>
是有意义的,但在OP的情况下,这并不能解决他的问题。根据我对其他答案之一的评论,使用右移运算符的数字都不在范围内
0。。127
因此无需使用无符号移位运算符。但在应用运算符>>3次后,将使用无符号移位运算符。如果该数字>=32,则移动三位后变为128,这已经是一个负数。如果它是无符号字节,它将正常工作,但如果使用7位而不是8位,结果将不同。但这取决于函数应该做什么。不,再看一遍。只有两个右移-
BitPMC1[i]>>3
i>>3
BitPMC1
数组是常量,仅包含值
0..127
i
是循环计数器,从
0开始。。55
。哪个值高于32huh?只有设置了位7的“有符号”值(即负数或“无符号”值>127)才会受到影响。32不包括在内。
java  outData[i >> 3]  and c#  different
int unsigned_value = ((int)byte_value) & 0xff;