Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用String.Format在WPF中显示版本字符串 我是C++开发人员,最近转移到C语言。我正在开发一个wpf应用程序,在这里我需要处理String.Format。在我的C++应用程序中,我使用了 SaveTf来获得结果,但是当谈到C时,Str.Frad帮助我实现了它。现在我遇到了一个棘手的情况,我需要实现类似的事情,但有不同的价值观。下面是C++代码: char t_str[4] = {}; for(int i = 0; i < 4; i++) { sprintf(t_str, "%02X", buffer[i]); m_apiResponse[i]->setText(String(t_str)); }_C#_C++_.net_Wpf - Fatal编程技术网

C# 无法使用String.Format在WPF中显示版本字符串 我是C++开发人员,最近转移到C语言。我正在开发一个wpf应用程序,在这里我需要处理String.Format。在我的C++应用程序中,我使用了 SaveTf来获得结果,但是当谈到C时,Str.Frad帮助我实现了它。现在我遇到了一个棘手的情况,我需要实现类似的事情,但有不同的价值观。下面是C++代码: char t_str[4] = {}; for(int i = 0; i < 4; i++) { sprintf(t_str, "%02X", buffer[i]); m_apiResponse[i]->setText(String(t_str)); }

C# 无法使用String.Format在WPF中显示版本字符串 我是C++开发人员,最近转移到C语言。我正在开发一个wpf应用程序,在这里我需要处理String.Format。在我的C++应用程序中,我使用了 SaveTf来获得结果,但是当谈到C时,Str.Frad帮助我实现了它。现在我遇到了一个棘手的情况,我需要实现类似的事情,但有不同的价值观。下面是C++代码: char t_str[4] = {}; for(int i = 0; i < 4; i++) { sprintf(t_str, "%02X", buffer[i]); m_apiResponse[i]->setText(String(t_str)); },c#,c++,.net,wpf,C#,C++,.net,Wpf,它工作得很好,给了我想要的答案。但现在我在我的C++应用程序中遇到了一个扭曲的版本…代码如下: unsigned char buffer[8] = {}; char verString[64] = {}; m_msp430->WriteInternalCommand(cmd, 1, buffer); m_msp430->ReadInternalCommand(cmd, 4, buffer); sprintf(verString, "FPGA 0x42 Version (dd/mm

它工作得很好,给了我想要的答案。但现在我在我的C++应用程序中遇到了一个扭曲的版本…代码如下:

unsigned char buffer[8] = {};
char verString[64] = {};

m_msp430->WriteInternalCommand(cmd, 1, buffer);
m_msp430->ReadInternalCommand(cmd, 4, buffer);

sprintf(verString, "FPGA 0x42 Version (dd/mm/yyyy ID): %02d/%02d/20%02d %02d", ((buffer[3] & 0xF8) >> 3), 
            (buffer[2] & 0x0F), ((buffer[2] & 0xF0) >> 4), (buffer[3] & 0x07));

m_versionString->setText(String(verString), false);
此处m_versionString是一个标签,一旦执行此语句,它将打印例如
FPGA 0x42版本(dd/mm/yyyy ID):00/00/2012 23
。我在C#中试过如下:

Response1Box = buffer[0].ToString("X2");
Response2Box = buffer[1].ToString("X2");
Response3Box = buffer[2].ToString("X2");
Response4Box = buffer[3].ToString("X2");
// Description of VersionString label which displays
    private string _VersionString;
    public string VersionString
    {
        get
        {
            return _VersionString;
        }

        set
        {
            _VersionString = value;
            OnPropertyChanged("VersionString");
        }
    }

    public void GetVersion()
    {
        int cmd = 0x0A42;
        Byte[] buffer = new Byte[8];
        Byte[] verString = new Byte[64];

        mComm.WriteInternalCommand(cmd, 1, ref buffer);
        mComm.ReadInternalCommand(cmd, 4, ref buffer);            

        // Failing to figure out how to achieve it

        VersionString = Convert.ToString(verString);
    }

如何执行这些操作并将其显示在我的版本字符串??)请帮助:(

< p>)你的C++代码不等于你的C代码。在sprintf之前,您正在屏蔽和位移位每个字节。C#不可能知道如何屏蔽单个字节来生成字符串

现在时间不多。。但基本上是这样的

verString = String.Format("FPGA 0x42 Version (dd/mm/yyyy ID): {0}/{1}/20{2} {3}", ((buffer[3] & 0xF8) >> 3), 
        (buffer[2] & 0x0F), ((buffer[2] & 0xF0) >> 4), (buffer[3] & 0x07));

或者,您可以在调用convert之前逐字节执行,无需字符串。格式化谢谢您的回复。是的,你是对的。它们是否可以替代单个比特的掩蔽方式,结果必须以C++代码的方式实现?你为什么不喜欢String.format?我认为它和sprintf最接近,我会在一分钟内看到,等我有时间;-)