【问题标题】:stdint.h for Java? [duplicate]用于 Java 的 stdint.h? [复制]
【发布时间】:2013-09-15 08:05:32
【问题描述】:

是否有实现标准数据类型的 java 库,因为它们在 C 中可用?

在Java中,一切都是签名的,所以使用byte来存储uint8_t会带来一些问题,例如:

byte test = (byte) 0xf3;
System.out.println("test = " + test);

打印

test = -13

而不是

test = 243

我想到了这样的事情:

UInt8 test = new UInt8(0xf3);
System.out.println("test = " + test.toInt());

【问题讨论】:

  • 你试过unsigned或unsigned byte吗?
  • 很遗憾,不,Java 没有无符号基元类型,与嵌入式硬件对话时很头疼。
  • @chrylis char 未签名。
  • @arshajii 没错,我忘了char 在技术上确实算作整数类型。
  • 只是一个表示(约定):0xf3 == -13,问题出在哪里?

标签: java stdint


【解决方案1】:

有一个解决方法,试试System.out.println("test = " + (0xff & test)); 你会得到 243

【讨论】:

  • 好的,但是您将如何在test 可以是动态的代码中使用它?这对我来说似乎有点棘手..
【解决方案2】:

我认为没有任何好的库可以实现 C/POSIX 标准数据类型。

最近我不得不在 Java 程序中使用预定义的 POSIX 常量,例如 S_IREAD 或 S_IFDIR,我不得不创建自己的常量列表类...

正如@Evgeniy Dorofeev 建议的那样,尝试寻找解决方法:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-26
    • 2023-03-30
    • 2013-08-30
    • 2012-11-18
    • 2015-04-21
    • 2011-02-14
    • 2018-08-31
    • 1970-01-01
    相关资源
    最近更新 更多