【发布时间】:2016-09-03 06:15:15
【问题描述】:
我需要将BigInteger 转换为以大端格式编码的无符号整数,但我遇到了问题,因为BigInteger.toByteArray 返回有符号表示。如何将此值转换为无符号格式?
(相对)有用的背景
我正在编写一些代码,这些代码使用 JNI 让 c++ 调用一些 Java 方法来处理一些加密功能(这是一个 Microsoft CNG 提供程序,它将一些功能卸载到 Java)。我有 Java 中的公钥,我需要转换的 BigInteger 值是coordinates of the Elliptic Curve Public Key。根据CNG documentation,我需要将这些点提供为“以大端格式编码的无符号整数”。
编辑
事后看来,这可能是一个愚蠢的帖子。我对负数和正数以及如何处理它感到困惑(因为已经很晚了,我的思绪已经变得糊涂了),但事实证明,自从elliptic curve points won't be negative 以来我不需要处理这个问题。感谢所有在这里回复的人!我会留下这个,以防它帮助其他人。
【问题讨论】:
-
如果有问题的整数是正数,有什么区别?如果是负数,那么转换为无符号的结果应该是什么?
-
换句话说,这是stackoverflow.com/q/38918190/95954的副本
-
简短回答:在字节数组中添加一个 0 字节并将其加载回 BigInteger。然后是积极的。
标签: java biginteger unsigned-integer unsigned-char