在C#中获取文件大小为十六进制

时间:2013-10-26 09:58:44

标签: c# c++ hex filesize

我正在尝试将文件大小从文件转换为十六进制代码,但它给了我一个错误。

到目前为止我的代码:

     public static string DecToHex(int decValue)
    {
        return string.Format("{0:x}", decValue);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        DirectoryInfo dinfo = new DirectoryInfo(@"C:\Users\Admin\Desktop\10 23\files");
        FileInfo[] Files = dinfo.GetFiles("*.xml");
        foreach (FileInfo file in Files)
        {
            listBox1.Items.Add(file.Name);
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        DirectoryInfo dinfo = new DirectoryInfo(@"C:\Users\Admin\Desktop\10 23\files");
        FileInfo[] Files = dinfo.GetFiles("*.xml");
        foreach (FileInfo file in Files)
        {
            listBox2.Items.Add(DecToHex(file.Length));
        }
    }     

错误是“..无法从'long'转换为'int'。 也许有人知道将文件大小显示为十六进制的更好方法。

我在c ++中有这段代码

if(m_bAlgorithm[HASHID_SIZE_32])
{
    sizehash32_end(&m_uSizeHash32);
    printf(SZ_SIZEHASH_32);
    printf(SZ_HASHPRE);

    printf("%08X", m_uSizeHash32);

    printf(CPS_NEWLINE);
}

1 个答案:

答案 0 :(得分:4)

为什么不将DecToHex方法更改为接受long。

FileInfo.Length返回一个long,您可以使用long作为string.Format的参数。

public static string DecToHex(long decValue)
    {
        return string.Format("{0:x}", decValue);
    }