标签: byte

为什么Java中的字节范围为-128到127?

我不明白为什么一个字节可以采用的最低值-128.我可以看到最高值是127,因为它是01111111二进制的,但是如何-128只用8位表示,其中一个用于符号?正128已经是8位,即10000000,然后你需要第9位来表示负号.

请有人帮我解释一下这个问题.

java byte

65
推荐指数
3
解决办法
6万
查看次数

如何将byte []转换为Byte [],反之亦然?

在不使用任何第三方库的情况下,如何将byte []转换为Byte [],并将Byte []转换为byte []?有没有办法快速使用标准库?

java arrays byte boxing

63
推荐指数
6
解决办法
7万
查看次数

Java:对象为byte []和byte []对象转换器(对于Tokyo Cabinet)

我需要将对象转换为byte []以存储在Tokyo Cabinet键值存储中.当从键值存储区读取时,我还需要将byte []取消对象.

那里有什么包可以帮我完成这项任务吗?或者是我自己实施的最佳解决方案?

java serialization byte bytearray tokyo-cabinet

62
推荐指数
5
解决办法
13万
查看次数

何时使用字节数组和字节缓冲区?

字节数组和字节缓冲区有什么区别?
此外,在什么情况下应该优先于另一个?

[我的用例是用于在java中开发的Web应用程序].

java buffer byte bytearray

62
推荐指数
3
解决办法
3万
查看次数

使用C#获取字段大小(以字节为单位)

我有一个类,我想检查它的字段并最终报告每个字段占用的字节数.我假设所有字段都是Int32,byte等类型.

如何轻松找出该字段占用的字节数?

我需要这样的东西:

Int32 a;
// int a_size = a.GetSizeInBytes;
// a_size should be 4
Run Code Online (Sandbox Code Playgroud)

c# reflection byte

60
推荐指数
6
解决办法
5万
查看次数

C程序检查小与大端

可能重复:
C宏定义确定大端或小端机器?

int main()
{
  int x = 1;

  char *y = (char*)&x;

  printf("%c\n",*y+48);
}
Run Code Online (Sandbox Code Playgroud)

如果它是小端,它将打印1.如果它是大端,它将打印0.这是正确的吗?或者将char*设置为int x始终指向最低有效位,而不管字节顺序如何?

c byte endianness

60
推荐指数
4
解决办法
14万
查看次数

解决所有Java字节都已签名这一事实的最佳方法是什么?

在Java中,没有无符号字节.

使用某些低级代码时,有时需要处理大于128的无符号值的字节,这会导致Java将其解释为负数,因为MSB用于符号.

解决这个问题的好方法是什么?(说不要使用Java不是一个选项)

java unsigned signed byte

58
推荐指数
2
解决办法
3万
查看次数

如果从数组中复制了Java,为什么Java需要对最终变量进行显式强制转换?

从以下代码开始......

byte foo = 1;
byte fooFoo = foo + foo;
Run Code Online (Sandbox Code Playgroud)

当我尝试编译此代码时,我将收到以下错误...

错误:(5,27)java:不兼容的类型:从int到byte的可能有损转换

......但如果foo是最终的......

final byte foo = 1;
final byte fooFoo = foo + foo;
Run Code Online (Sandbox Code Playgroud)

该文件将成功编译.

转到以下代码......

final byte[] fooArray = new byte[1];
fooArray[0] = 1;

final byte foo = fooArray[0];
fooArray[0] = 127;

System.out.println("foo is: " + foo);
Run Code Online (Sandbox Code Playgroud)

......会打印出来的

foo is: 1
Run Code Online (Sandbox Code Playgroud)

......很好.该值将复制到最终变量,不能再更改.使用数组中的值不会更改foo(正如预期的那样...)的值.

为什么以下需要演员?

final byte[] fooArray = new byte[1];
fooArray[0] = 1;
final byte foo = fooArray[0];
final byte fooFoo = foo + …
Run Code Online (Sandbox Code Playgroud)

java arrays int byte casting

57
推荐指数
3
解决办法
2694
查看次数

Java字节基元类型是否有任何实际用途?

由于一些莫名其妙的原因,byte原始类型是用Java签名的.这意味着有效值为-128..127而不是通常的0..255范围,表示一个字节中的8个有效位(没有符号位).

这意味着所有字节操作代码通常进行整数计算并最终屏蔽掉最后8位.

我想知道是否存在任何真实生活场景,其中Java byte原始类型完全适合,或者它是否只是一个完全无用的设计决策?


编辑:唯一的实际用例是本机代码的单字节占位符.换句话说,不要将其作为Java代码中的字节进行操作.


编辑:我现在已经看到一个内部紧密循环需要除以7(数字0..32)的位置,因此可以使用字节作为数据类型来完成查找表,以便考虑L1缓存使用时内存使用率保持较低.这不是指签名/无签名,而是实际使用的情况.

java byte types

56
推荐指数
3
解决办法
1万
查看次数

然后写入读取内存中的字节(BytesIO)会得到一个空白结果

我想尝试python BytesIO类.

作为一个实验,我尝试写入内存中的zip文件,然后从该zip文件中读取字节.因此gzip,我传入一个BytesIO对象,而不是传入一个文件对象.这是整个脚本:

from io import BytesIO
import gzip

# write bytes to zip file in memory
myio = BytesIO()
g = gzip.GzipFile(fileobj=myio, mode='wb')
g.write(b"does it work")
g.close()

# read bytes from zip file in memory
g = gzip.GzipFile(fileobj=myio, mode='rb')
result = g.read()
g.close()

print(result)
Run Code Online (Sandbox Code Playgroud)

但它正在返回一个空bytes对象result.这在Python 2.7和3.4中都会发生.我错过了什么?

python byte gzip bytesio

56
推荐指数
2
解决办法
2万
查看次数