gpt4 book ai didi

java - 按位右移和 0xFF | java

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:32 25 4
gpt4 key购买 nike

我试图理解一段代码,但无法清楚地了解一些要点这是Java代码

private String firstMethod(int number){
return secondMethod(number >> 16 & 0xFF, 0).concat(secondMethod(number >> 8 & 0xFF, 1)).concat(secondMethod(number & 0xFF, 7));
}

private static String secondMethod(int value, int offset)
{
return thirdMethod(value >> 4, offset).concat(thirdMethod(value & 0xF, offset + 4));
}

private static String thirdMethod(int value, int offset)
{
String chars = getAlphabet();
int pos = (value + offset) % 16;
return chars.substring(pos, pos + 1);
}

第一次传递给 firstMethod 的值是一个随机数,所有后续调用方法都会传递递增 1 的值。

按位右移操作我很清楚,&0xFF的使用我也很清楚,但是下面几点我还是不太清楚

  • 按特定数字移动给定值(例如 16 和 8 首先比不筛选等)
  • 不清楚offset的使用,具体是传递某个数字作为offset。

谁能帮我理解这两点

最佳答案

Shifting given value by specific number (like 16 and 8 for first than no sift etc)

您正在将字节打印为十六进制。每个字节都是 8 位,所以你想将每个字节移动

Not clear about use of offset ,specifically passing certain number as offset.

我很确定偏移量是 a) 不正确,b) 一种非常晦涩的屏蔽/编码数据的方式。

要将数字打印为 6 字节的十六进制十进制字符串,您可以这样做。

System.out.println(String.format("%06x", 12345));

打印

003039

这要短得多。 ;)


>>> 的优先级低得惊人。这意味着

number >> 16 & 0xFF

实际上是

number >> (16 & 0xFF)

number >> 16

你的意思是

(number >> 16) & 0xFF

或者结果是无符号的。

(number >>> 16) & 0xFF

关于java - 按位右移和 0xFF | java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25594113/

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