什么时候需要将java中的十六进制文字转换为(byte)?

Ill*_*huk 4 java hex casting

出于测试目的,我尝试创建一个这样的数组:

byte[] expected = new byte[]{0x2f, 0x0d4, 0xe1, 0xc6, 0x7a, 0x2d, 0x28, 0xfc}
Run Code Online (Sandbox Code Playgroud)

我曾预料到,java会抱怨并会要求我将每个文字转换为(byte),但出乎意料的是,它要求我只转换0x4d,例如,而不是0x2f.工作实例:

new byte[]{0x2f, (byte) 0xd4, (byte) 0xe1, (byte) 0xc6, 0x7a, 0x2d, 0x28, (byte) 0xfc}
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?

Lan*_*nbo 8

我怀疑这是因为Java字节是有符号的,因此你的范围在-128到127之间.所以所有值> 127(0x80)都必须显式转换.