0

10進値を取得し、それを16進に変換しようとしています。これはSCADAプログラム内のC#スクリプトです。以下は、16進数を12進数に変換します。

using System;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using System.Linq;

public partial class ФБ : ScriptBase
{
    public override void Execute()
    {
    string hexValue = InVal;
    int num = Int32.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
    OutVal = num;   
    }
}

しかし、私は反対の問題を抱えています-私が12月を16進数に変換しようとすると。私の理解では、以下は機能するはずですが、エラーが発生します。メソッド「ToString」のオーバーロードはありません。12行目で「1」引数を取ります。

11    int? decValue = InVal;
12        string hexValue = decValue.ToString("X");
13        //string hexValue = string.Format("{0:F0}", decValue);
14        uint num = uint.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
15        OutVal = num;

12行ではなく13行を使用することでエラーを回避できますが、この場合、DecからHexではなくHexをDecに変換しています。誰か助けてもらえますか?

4

3 に答える 3

1

値を呼び出そうとToString(string)していint?ます。Nullable<T>過負荷はありませんToString(string)。次のようなものが必要です。

string hexValue = decValue == null ? "" : decValue.Value.ToString("X");

decValue(明らかに、がnullの場合の結果に応じて、上記を調整します。)

于 2013-02-19T14:43:40.187 に答える
0

decValue.Value.ToString("X"); あなたのタイプを試してみてint?くださいint

于 2013-02-19T14:43:18.620 に答える
0

これが私の関数です:

using System;
using System.Collections.Generic;
class DecimalToHexadecimal
{

    static string DecToHex(decimal decim)
    {
        string result = String.Empty;

        decimal dec = decim;

        while (dec >= 1)
        {
            var remainer = dec % 16;
            dec /= 16;
            result = ((int)remainer).ToString("X") + result;
        }

        return result;
    }

    static void Main()
    {
        Console.WriteLine("Enter decimal");
        decimal dec = decimal.Parse(Console.ReadLine());
        Console.WriteLine("Hexadecimal representation to {0} is {1}", dec, DecToHex(dec));

        Console.ReadKey();
    }
}
于 2014-01-12T20:01:52.350 に答える