当前位置: 首页 > 知识库问答 >
问题:

如何在不使用convert.to()方法的情况下将基数10负数转换为基数8转换?

孟子墨
2023-03-14

不使用convert.to()方法,如何用八进制表示十进制负数?

public static string GetOctal(int number)
{     
   int base = 8;    
}

例如:

-3(基数10)=37777777775(基数8)

但是我应该用什么算法得到这个结果呢?

这些是我的任务的测试用例:

        [TestCase(-3, 8, ExpectedResult = "37777777775")]
        [TestCase(-127, 8, ExpectedResult = "37777777601")]
        [TestCase(-675432, 8, ExpectedResult = "37775330630")]
        [TestCase(-1908345, 8, ExpectedResult = "37770560607")]
        [TestCase(int.MinValue, 8, ExpectedResult = "20000000000")]
        [TestCase(-3, 16, ExpectedResult = "FFFFFFFD")]
        [TestCase(-127, 16, ExpectedResult = "FFFFFF81")]
        [TestCase(-675432, 16, ExpectedResult = "FFF5B198")]
        [TestCase(-1908345, 16, ExpectedResult = "FFE2E187")]
        [TestCase(int.MinValue, 16, ExpectedResult = "80000000")]
        [TestCase(1908345, 10, ExpectedResult = "1908345")]
        [TestCase(int.MaxValue, 10, ExpectedResult = "2147483647")]
        public string GetRadix_Tests(int number, int radix) => number.GetRadix(radix);

共有1个答案

安浩瀚
2023-03-14

您始终可以在此处找到source.dot.NET中的Convert类的源代码,并遵循ParsenumberIntToString方法:

public static string IntToString(int n, int radix, int width, char paddingChar, int flags)
{
    Span<char> buffer = stackalloc char[66]; // Longest possible string length for an integer in binary notation with prefix

    if (radix < MinRadix || radix > MaxRadix)
        throw new ArgumentException(SR.Arg_InvalidBase, nameof(radix));

    // If the number is negative, make it positive and remember the sign.
    // If the number is MIN_VALUE, this will still be negative, so we'll have to
    // special case this later.
    bool isNegative = false;
    uint l;
    if (n < 0)
    {
        isNegative = true;
    (...)
 类似资料:
  • 问题内容: 有没有一种方法可以将数字从基数B1转换为基数B2,而无需使用任何中间基数。 例如: 214(从5到16),而无需先将其转换为十进制,然后再将其转换为十六进制。 - 谢谢 Alok Kr。 问题答案: 要将214 base5转换为不带中间基数的16基数,您“只是”必须知道如何直接在5基数中进行计算。 首先,您需要一张表,其中以15为底的16位数字是什么(将以10为底的基数转换为16时,您

  • 问题内容: 如何在Python中将负数转换为正数?(并保持积极的态度。) 问题答案: 不要忘记检查文档。

  • 我的任务是创建一个方法,该方法将接受用户输入的3位数int,并输出其反方向(123-321)。我不允许将int转换为字符串,否则我将失去分数,我也不允许打印main以外的任何地方。

  • 我有一个字符串数组,表示二进制数(不带前导零),我想将其转换为相应的10进制数。考虑: 最好的方式是什么?我一直在探索java。lang.number.*没有找到直接的转换方法<代码>整数。parseInt(b)生成一个等于字符串的整数。。。e、 1001变成了1001而不是9。。。而且似乎不包括输出基的参数转换方向错误。我怀疑我需要进行多步转换,但似乎找不到方法或子类的正确组合。我也不确定前导零

  • 我的要求就像,我有一个json文件数据如下。,{Key1: value e1, key2: value 2,......}带有文件名example.json 应将其插入sql server,取名称:示例数据如下,Id key1 key2 1 value 1 value 2 我正在寻找一种解决方案,这样就不会有任何Java层的复杂性,比如首先将这些数据转换为JavaBean,然后使用Java数据库驱

  • 我必须写一个方法,它有一个Integer类型的参数,并且必须返回一个Character类型的对象。如果给定参数的值可以表示为字符对象,则将其作为字符返回。否则返回null。 我的任务制定得很糟糕,它说:“不安全的转换(例如从int到char)在你的代码中是不允许的”,我想这不是不安全的,但也不允许? 到目前为止我的代码: 我试图通过任何方式修复它,但就是无法提出不使用不安全转换的解决方案,非常感谢