快速问题......
我有一个愚蠢的长BigInteger,我想写一个文件作为十六进制字符串.
我知道Java提供了.toString(16)这样做的方法,但我找不到C#中的等价物.
我正在使用System.Numerics.BigInteger.NET 4.0.
谢谢
在Java中,我能做到
//Parsing Octal String
BigInteger b = new BigInteger("16304103460644701340432043410021040424210140423204",8);
Run Code Online (Sandbox Code Playgroud)
然后按照我的喜好格式化它
b.toString(2); //2 for binary
b.toString(10); //10 for decimal
b.toString(16); //16 for hexadecimal
Run Code Online (Sandbox Code Playgroud)
C#BigInteger提供了上面显示的格式化功能,但我似乎无法找到解析BIIIG(大于64位,无符号)八进制值的方法.
我想在C#中将一个大数字(例如:9407524828459565063)转换为十六进制(例如:828E3DFD00000000).
问题是该数字大于Int64的最大值.
我到处查找,找不到合适的解决方案.
有什么帮助吗?
谢谢.
目前我使用的是Long整数类型.我使用以下内容从/转换为二进制/数字:
Convert.ToInt64(BinaryString, 2); //Convert binary string of base 2 to number
Convert.ToString(LongNumber, 2); //Convert long number to binary string of base 2
Run Code Online (Sandbox Code Playgroud)
现在我使用的数字已超过64位,因此使用BigInteger开始.我似乎无法找到相当于上面的代码.
如何将具有超过64位的BinaryString转换为BigInteger数,反之亦然?
更新:
答案中的引用包含了我想要的答案,但是我在从Number转换为Binary时遇到了一些麻烦.
我使用了第一个参考中提供的以下代码:
public static string ToBinaryString(this BigInteger bigint)
{
var bytes = bigint.ToByteArray();
var idx = bytes.Length - 1;
// Create a StringBuilder having appropriate capacity.
var base2 = new StringBuilder(bytes.Length * 8);
// Convert first byte to binary.
var binary = Convert.ToString(bytes[idx], 2);
// Ensure leading zero exists if value is positive. …Run Code Online (Sandbox Code Playgroud) 在Java和Javascript 中,BigInteger都有一个被调用的函数toString(int radix),它返回给定String的 thisBigInteger的表示radix。
我想知道C# ( .NET ) 中是否有任何方法可以完成 java 和 javascript 可以做的工作?
我先描述一下场景。
我想做的是将字符串转换为十六进制。
例如,假设一个由 1 和 0 组成的二进制字符串。110011,将它们配对为一组 4 位(这里为 8 位附加两个 0),将每对分别转换为十六进制,然后将十六进制字符串结果连接起来以获得输出。
对于八进制,与二进制相同,但这里输入的八进制字符串被分成 3 位数字的组
对于 ASCII,每个数字的字节等效值将转换为十六进制并存储。
现在的问题是十进制字符串输入该怎么办?
- 我是否应该考虑使用与 ASCII 相同的方法?-或者还有其他方法吗?
编辑 :-
我不只是转换数字,而是转换数字数组。
二进制字符串 - 4 位数字组,然后将其转换为十六进制
八进制字符串 - 3 位数字组,然后将其转换为十六进制
ASCII 字符串 - 每个字符的字节等效值,然后将其转换为十六进制
所以长度不是问题。问题是如何转换十进制字符串(我应该使用哪种配对/分组)
注意:我已经知道如何将八进制、二进制和十进制数转换为十六进制。这部分更多的是关于如何“将十进制字符串分组”,以便将每个十进制分组分别转换为十六进制,然后将所得的十六进制连接起来。