首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >四个整数,四个字节?

四个整数,四个字节?
EN

Stack Overflow用户
提问于 2011-01-26 11:53:55
回答 3查看 808关注 0票数 4

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

我正在编写一份STANAG文件,其中引用了以下内容:

ID号应形成为4字节数字.第一个(最重要的)字节应该是该对象的标准北约国家代码。有效的国家代码应从0到99小数点.应保留国家代码255 (十六进制FF)。

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

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

我非常希望在此作出任何澄清。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-26 11:56:48

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

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

代码语言:javascript
复制
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位整数

代码语言:javascript
复制
11110101   00000100   00001001   00000000
^byte      ^byte      ^byte      ^byte

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

票数 4
EN

Stack Overflow用户

发布于 2011-01-26 11:58:05

"99“在数学上是一个整数,但从Java的角度看不一定是Integerint。例如,值99可以由short (简称“短整数”)(16位数据类型)或byte (8位数据类型)持有。

因此,基本上,您需要将它们的ID看作是一个由四个byte值组成的系列。注意,Java的byte类型是签名的。

票数 3
EN

Stack Overflow用户

发布于 2011-01-26 12:00:08

整数(计算外)只是指没有小数点的任何值,其中包括2,99,-5,34134,427391471244211等。在计算术语中,整数是(传统上)包含任何适合它的值的32位数。该(计算)整数值的每个字节(8位)也是0到255之间的单个(数字)整数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4804256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档