当前位置: 首页 > 面试题库 >

我们可以在Java中制作无符号字节吗

赵英范
2023-03-14
问题内容

我正在尝试将无符号字节转换为带符号字节。问题是我接收的数据是无符号的,并且Java不支持无符号字节,因此当它读取数据时,会将其视为已签名。

我尝试通过从Stack Overflow获得的以下解决方案将其转换。

public static int unsignedToBytes(byte a)
{
    int b = a & 0xFF;
    return b;
}

但是当再次将其转换为字节时,我得到了相同的签名数据。我试图将这些数据用作Java函数的参数,该Java函数仅接受字节作为参数,因此我不能使用任何其他数据类型。我该如何解决这个问题?


问题答案:

我不确定我是否理解你的问题。

我刚刚尝试过,对于字节-12(有符号值),它返回整数244(等效于无符号字节值,但键入为int):

  public static int unsignedToBytes(byte b) {
    return b & 0xFF;
  }

  public static void main(String[] args) {
    System.out.println(unsignedToBytes((byte) -12));
  }

这是你想做的吗?

Java不允许表达244的byte价值,将C.为了表达上述的正整数Byte.MAX_VALUE(127),你必须使用其他整型一样shortintlong



 类似资料:
  • 问题内容: Java中的字节默认为带符号的。我在其他帖子上看到具有无符号字节的解决方法类似于以下内容: 有人可以向我解释为什么这样做有效,并将有符号字节转换为无符号字节,然后将其转换为整数吗?具有11111111的字节导致相同的字节-对吗? 问题答案: 类型转换的优先级高于运算符。因此,您首先要转换为一个int,然后再进行ANDing以掩盖所有已设置的高阶位,包括java所用的二进制补码表示法的“

  • 问题内容: 我需要使用无符号字节数组。我需要通过网络将某些字符发送到服务器,其中一些字符大于127。 我有下面的代码的简化版本,以尝试理解该概念: 这给出了以下输出: 我需要打印160。由于服务器期望一个160的字节,并且如果它接收到-96,则它不接受该值。我使用int的原因是,当我阅读如何解决该问题时,我经常碰到使用int的建议,但是我不太理解,因为我需要数组为byte类型。 这是我发送数组的代

  • 问题内容: 我们可以完全禁用字符串的实习吗?它可能并没有真正的帮助,只是一个想法。我可以认为至少有一点会有所帮助,即在jvm调整期间,控制perm gen的大小。 例如,如果我给出一个OSGI框架,并且任何人都可以添加任意数量的捆绑包,并且每个捆绑包字符串内插都可以完全搞乱我的调整参数。(当然,我知道我们应该在给定的固定发行版上进行调音,但是仍然…) 有什么想法吗!! 问题答案: 对于现代JVM,

  • 需要使用剪贴板操作将字符串值粘贴到WebElement

  • 问题内容: 我们可以将字节数组转换为Java中的InputStream吗?我一直在上网,但找不到。 我有一个具有InputStream作为参数的方法。 我拥有的InputStream 是base64编码的,因此我不得不使用 现在如何再次转换为? 问题答案: 用途:

  • D的答案等于C。但E的安瑟是正确的。我想不出原因。 谢谢