动机:我想将哈希值(MD5/SHA1 等)转换为十进制整数,以便在 Code128C 中制作条形码。
为简单起见,我希望所有结果(大)数字都是正数。
我能够在 C# 中将 byte[] 转换为 BigInteger...
到目前为止我所拥有的样本:
byte[] data;
byte[] result;
BigInteger biResult;
result = shaM.ComputeHash(data);
biResult = new BigInteger(result);
但是(这里生锈的 CS)我是否正确,字节数组总是可以用两种方式解释:
是否可以从 C# 中的 byte[] 生成 UNSIGNED BigInteger?
我是否应该简单地在 byte[] 前面添加 0x00(零字节)?
EDIT:感谢 AakashM、Jon 和 Adam Robinson,追加零字节实现了我所需要的。
EDIT2:我应该做的主要事情是阅读 BigInteger(byte[]) 构造函数的详细文档,然后我会看到有关如何通过附加零字节来限制正数的部分。
The 备注为BigInteger构造函数 http://msdn.microsoft.com/en-us/library/dd268207.aspx#d04b3694-ade4-4482-99f3-267d0862569c声明你可以确保任何BigInteger
创建自byte[]
如果您附加一个则未签名00
byte 到数组末尾在调用构造函数之前。
注:BigInteger
构造函数期望数组采用小端顺序。如果您期望得到结果,请记住这一点BigInteger
具有特定的价值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)