我正在使用一个Web Service,期望在8个十六进制字节的字符串中使用EpochSecond。

我正在使用这个:

Instant now = Instant.now();
Long.toHexString(now.getEpochSecond());


这给了我类似593ad84b这样的东西,Web Service向我返回了无效数据,但是我会说格式是正确的,对吧?

最佳答案

您对“字节”一词的使用令人困惑。这可能意味着:


“一个十六进制数字代表八个字节的字符串”,它将需要十六个十六进制数字(因为需要两个十六进制数字来表示一个字节值)
“包含八个ASCII字符的字符串”(字符串本身在大多数编码中占用八个字节)


根据您引用的示例,我怀疑这是第一种情况,这意味着您的字符串必须包含16个十六进制数字:

Instant now = Instant.now();
String seconds = String.format("%016x", now.getEpochSecond());

09-29 21:32