我可以在Java中以Long数据类型存储大的十六进制值吗?

时间:2018-02-02 11:25:36

标签: java int long-integer mac-address

Mac地址长度为6个字节(12位数或48位长)。 Long可以容纳8个字节的数据但是我仍然无法在长数据变量中存储以下mac地址吗?

Long mac=(long) 0xffffffffffff;

为什么会这样? 存储mac地址数据类型的最佳数据类型是什么(我想以base10格式存储)?

2 个答案:

答案 0 :(得分:1)

您没有使用long值,而是使用int。只需将L添加到您的号码

即可
Long mac= 0xffffffffffffL;

引用Oracle

  

如果整数文字以字母L或l结尾,则其长度为long;   否则它是int类型。建议您使用鞋面   大小写字母L因为小写字母l很难区分   从数字1。

关于选择哪种数据类型的

关于你的问题,只要它拥有必要的48位,任何数据类型都可以是好的。

值得注意的是,java返回一个字节数组以获取NetworkInterface#getHardwareAddress中的harware地址,但声明它是'通常'一个mac地址。

答案 1 :(得分:1)

您必须在最后添加L来将其定义为Long值:

Long mac = 0xffffffffffffL;

您可以在Java SE Spec(3.10.1。整数文字)中找到L的更多信息。