gpt4 book ai didi

java - 移植C代码;需要有关按位运算和指针语法的帮助

转载 作者:太空宇宙 更新时间:2023-11-04 05:02:49 24 4
gpt4 key购买 nike

我有一些 C 代码想移植到 java。我没有做太多 C 编码,但我能够跟进直到这个函数。如果有人可以帮助我了解发生了什么,将不胜感激。

int reverse_integer(int input) {
int output = 0, i;

for ( i=0, i<sizeof(int); i++ ) {
output = ( input & 0x000000FF ) | output;
input >>= 8;
if ( i < 3 ) {
output <<= 8;
}
}

return output;
}

函数是这样使用的:

char * position = //some data

/*the included comment on this next line states its the size of a string*/
int i = reverse_integer( *(int*)position )

最佳答案

我很乐意发布与 C 代码功能相同的 Java 代码,但前提是您保证不使用它。

/** Reverses the bytes in an integer. */   public static int reverseInteger(int input) {      return         (input >>> 24) |         (input >> 8) & 0x0000ff00 |         (input << 8) & 0x00ff0000 |         (input << 24);   }

请注意,循环没有意义 - Java 中的 int 始终为 4 个字节。另请注意表达式开头的三个右尖括号,以执行无符号右移。

现在不使用它的原因:

1 - 该函数已经存在 - 请参阅 Integer.reverseBytes(int)

2 - 您将很难使用该示例代码,因为 Java 不允许您将字节数组转换为其他任何内容。 Java 是正式的 big-endian(最重要的字节在前),所以如果您从文件中读取字节,那么您可以使用 java.io.DataInputStream 来提取 ints、longs 等。

关于java - 移植C代码;需要有关按位运算和指针语法的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1895131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com