无法使用String.Format在WPF中显示版本字符串

Failing to use String.Format to display Version String in WPF

本文关键字:WPF 显示 版本 字符串 Format String      更新时间:2023-10-16

i是C 开发人员,最近移至C#。我正在开发一个需要在String.Format上工作的WPF应用程序。在我的C 应用程序中,我曾使用sprintf获得结果,但是当涉及C#时,String.format帮助我实现了它。现在,我遇到了一个棘手的情况,我需要实现类似的目标,但具有不同的价值。这是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));
}

其中buffer[0] = 20; buffer[1] = 30; buffer[2] = 40; buffer[3] = 50;m_apiResponse是文本框。

即使string.format也很有帮助,我还是选择易于执行的方式。我在我的C#中做到了以下操作:

Response1Box = buffer[0].ToString("X2");
Response2Box = buffer[1].ToString("X2");
Response3Box = buffer[2].ToString("X2");
Response4Box = buffer[3].ToString("X2");

它运行良好,给了我我想要的答案。但是现在我在我的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 Version (dd/mm/yyyy ID): 00/00/2012 23。我在C#中尝试了以下内容:

// 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);
    }

我如何执行这些操作并在我的版本播放上显示?:)请帮助:)

您的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));

,或者您可以通过byte进行字节,而无需字节。Format在调用转换

之前