Java中的十六进制整数到十进制整数

发布于 2024-10-11 08:10:38 字数 223 浏览 3 评论 0原文

我需要将十六进制整数解析为十进制整数。

例如,十六进制:02 01(十进制模式下为513)应表示201。 在代码中它可以通过:

Assert.assertEquals(201, parse(0x201));

How can I Implement the method parse()?谢谢!

I need to parse hex integer to decimal integer.

For example, Hex: 02 01 (513 in decimal mode) should represent 201.
In code it could pass:

Assert.assertEquals(201, parse(0x201));

How can I implement the method parse()? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

蓝天 2024-10-18 08:10:38

使用Integer.toHexString()

System.out.println(Integer.toHexString(0x201));

输出:201

Use Integer.toHexString()

System.out.println(Integer.toHexString(0x201));

Output : 201

情话已封尘 2024-10-18 08:10:38

您可以使用 parseInt

Assert.assertEquals(513, Integer.parseInt("201", 16));

You can use the two-parameter version of parseInt:

Assert.assertEquals(513, Integer.parseInt("201", 16));
此岸叶落 2024-10-18 08:10:38

我认为您只需将 16 基数转换为 10 基数,如下所示:

int parse(int n) {
  if (n == 0) return 0;
  int digit = n & 0xf;
  assert digit >= 0 && digit <= 9;
  return parse(n >> 4) * 10 + digit;
}

可能不适用于负数。

你为什么要这么做?似乎是一件很愚蠢的事情。

I think you just need to convert base 16 digits to base 10 digits, as follows:

int parse(int n) {
  if (n == 0) return 0;
  int digit = n & 0xf;
  assert digit >= 0 && digit <= 9;
  return parse(n >> 4) * 10 + digit;
}

probably won't work for negative numbers.

Why do you want to do this anyway? Seems a pretty silly thing to do.

嘿看小鸭子会跑 2024-10-18 08:10:38

我发现 String.format("%x", t) 适用于该函数。不管怎样,感谢马克·安尼凡和基思!

I find String.format("%x", t) works for the function. Anyway, thanks for Mark anirvan and Keith!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文