只是想知道.NET是否提供了一种干净的方法来执行此操作:
int64 x = 1000000;
string y = null;
if (x / 1024 == 0) {
y = x + " bytes";
}
else if (x / (1024 * 1024) == 0) {
y = string.Format("{0:n1} KB", x / 1024f);
}
Run Code Online (Sandbox Code Playgroud)
等等...
我在我的C#项目中使用DriveInfo类来检索给定驱动器上的可用字节.如何正确地将此数字转换为兆字节或千兆字节?除以1024将无法完成我的工作.结果总是与Windows资源管理器中显示的结果不同.
我总是对此感到困惑.是否存在Megabits到字节的"标准"转换?
是吗:
1 Megabit == 1,000,000 bits == 125,000 bytes
Run Code Online (Sandbox Code Playgroud)
要么:
1 Megabit == 2^20 bits == 1,048,576 bits == 131,072 bytes
Run Code Online (Sandbox Code Playgroud) 我有一个日志表,以字节为单位存储各种文件大小.我希望能够查询数据库并返回已经转换为MB GB等的最小浮点数.目前我可以返回以MB为单位的值但是如何继续进一步划分为最小值并附加单位?
SELECT CONCAT( ROUND( SUM( data_transferred ) /1048576, 2 ) , ' MB' )
FROM `logs`
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
更新:
基于链接voodoo417,我将查询更新为以下内容,它将最相关的文件大小输出到两个小数位并附加单位(1000字节,1 KB,500 MB,2 GB等):
SET @bytes := (SELECT SUM(data_transferred) FROM wp_ddownload_statistics);
SELECT
CASE
WHEN ABS(@bytes) < 1024 THEN CONCAT( ROUND( @bytes, 2 ), ' Bytes')
WHEN ABS(@bytes) < 1048576 THEN CONCAT( ROUND( (@bytes/1024), 2 ), ' KB')
WHEN ABS(@bytes) < 1073741824 THEN CONCAT( ROUND( (@bytes/1048576), 2 ), ' MB')
WHEN ABS(@bytes) < 1099511627776 THEN CONCAT( ROUND( (@bytes/1073741824), 2 ), ' GB' …
Run Code Online (Sandbox Code Playgroud) 基本上我正在创建一个复制应用程序,我只需要弄清楚数据库大小以及D:\驱动器上有多少可用空间.
如果数据库大小大于可用空间,那么我需要提醒用户.
这是我到目前为止:
首先,我找出D驱动器中有多少可用空间.
DriveInfo di = new DriveInfo(@"D:\");
if (di.IsReady)
{
freeSpace = di.TotalFreeSpace;
}
Run Code Online (Sandbox Code Playgroud)
然后我得到了我要复制的数据库的大小:
dbSize = Database.GetDatabaseSize(ddlPublisherServer.Text, ddlPublisherDatabase.Text);
Run Code Online (Sandbox Code Playgroud)
这是获取数据库大小的方法.我不知道是否有更好的方法来做到这一点,但是大小带有"MB"字符串,所以我需要删除它.
public static long GetDatabaseSize(string server, string database)
{
string finalConnString = Properties.Settings.Default.rawConnectionString.Replace("<<DATA_SOURCE>>", server).Replace("<<INITIAL_CATALOG>>", database);
using (SqlConnection conn = new SqlConnection(finalConnString))
{
using (SqlCommand cmd = new SqlCommand("sp_spaceused", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
cmd.ExecuteNonQuery();
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
using (DataSet ds = new DataSet())
{
da.Fill(ds);
var spaceAvailable = ds.Tables[0].Rows[0][1].ToString();
string freeSpace = spaceAvailable.Remove(spaceAvailable.Length - …
Run Code Online (Sandbox Code Playgroud)