gpt4 book ai didi

java - 四个字节中的四个整数?

转载 作者:搜寻专家 更新时间:2023-11-01 01:47:37 31 4
gpt4 key购买 nike

我想知道我是否可以就我目前正在做的一些工作寻求一些建议。

我正在使用引用以下内容的 STANAG 文档:

ID numbers shall be formed as 4-byte numbers. The first (most significant) byte shall be the standard NATO country code for the object in question. Valid country codes shall range from 0 to 99 decimal... Country code 255 (hexadecimal FF) shall be reserved.

然后继续详细说明其他三个字节。在规范中,ID 被赋予 Integer 4 类型,其中 Integer n 是有符号整数,n 是 1,2 或 4 字节。

我的问题是,我承认这可能被认为是一个无知的问题,我深表歉意,正如我们所知,整数是 32 位/4 字节。当99是整数时,“第一个字节”怎么可能是,例如99?

如有任何说明,我将不胜感激。

最佳答案

一个整数通常是 4 个字节。但是如果你存储一个像 99 这样的小数字,其他三个字节存储 8x 个 0 值位。该规范要求您使用一个整数存储(4 字节)在其字节内存储 4 个不同的较小数字。

最简单的方法可能是在 4 个字节的数组上使用 toInt 函数,例如(没有字节 [] 长度检查,也没有测试此功能 - 它只是说明性的)

public static final int toInt(byte[] b) 
{
int l = 0;
l |= b[0] & 0xFF;
l <<= 8;
l |= b[1] & 0xFF;
l <<= 8;
l |= b[2] & 0xFF;
l <<= 8;
l |= b[3] & 0xFF;
return l;
}

byte[] bytes = new byte[] {99, 4, 9, 0};
int i = toInt(bytes, 0);

32 位的 int

11110101   00000100   00001001   00000000
^byte ^byte ^byte ^byte

int 中的每个 8 位 block 足以“编码”/“存储”一个较小的数字。因此 int 可用于将 4 个较小的数字混合在一起。

关于java - 四个字节中的四个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4804256/

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