Java写入int的第一个字节
好的,所以我搜索了又搜索,什么都没找到。。。 我有一个int数组,每个int只占用低位字节。例如,我有
data[0] = Ox52
data[1] = Oxe4
data[2] = Ox18
data[3] = Oxcb
我希望标准输出正好包含这些字节(或者换句话说,如果我在文件中写入这些字节,并使用十六进制编辑器检查文件,我应该看到):
52e418cb
我该怎么做
谢谢你的帮助
你可以在下面搜索框中键入要查询的问题!
好的,所以我搜索了又搜索,什么都没找到。。。 我有一个int数组,每个int只占用低位字节。例如,我有
data[0] = Ox52
data[1] = Oxe4
data[2] = Ox18
data[3] = Oxcb
我希望标准输出正好包含这些字节(或者换句话说,如果我在文件中写入这些字节,并使用十六进制编辑器检查文件,我应该看到):
52e418cb
我该怎么做
谢谢你的帮助
# 1 楼答案
正确的方法是根据所需的位置移动字节,然后使用OR运算符将它们缝合在一起。但是,在移位之前,还应该对字节的低8位执行位掩码。这是必需的,因为字节首先转换为int(在移位完成之前)。这没什么大不了的,但当最高位为1(即字节为负数)时,整数也将变为负数,这将导致所有前导位都设置为1
因此:
将此负int值与OR运算符一起使用将导致错误结果。所以,工作线是这样的:
# 2 楼答案
下面的方法似乎很有效。我正在使用
OutputStream.write(int)
方法结果:
# 3 楼答案
在将它们写入文件/输出之前,只需将它们移到一起: