标题:分享一个16进制文件查看器,原创哦~
只看楼主
sostemp
Rank: 4
等 级:业余侠客
威 望:8
帖 子:162
专家分:221
注 册:2009-6-2
得分:4 
回复 19楼 liunis

WIN7_x64 G2020+8G

2.7M,得75秒左右。
2023-04-20 09:07
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:4 
精益求精的代码。

活到老,学到老! http://www. E-mail:hu-jj@
2023-04-20 09:16
sostemp
Rank: 4
等 级:业余侠客
威 望:8
帖 子:162
专家分:221
注 册:2009-6-2
得分:0 
回复 18楼 吹水佬
版主,借个楼,说到文件大小,VFP怎么调用js代码(示例2),或改写这段代码(示例2)。
谢谢。

js将文件的大小转换成 B KB MB GB的方法教程_js文件大小换算_码云笔记的博客-CSDN博客
https://blog.



[此贴子已经被作者于2023-4-20 09:52编辑过]

2023-04-20 09:48
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用sostemp在2023-4-20 09:07:33的发言:


WIN7_x64 G2020+8G

2.7M,得75秒左右。

CPU主频不算低,应该不会差那么多。是不是任务繁忙,看看CPU资源情况。
2023-04-20 09:51
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用sostemp在2023-4-20 09:48:04的发言:

版主,借个楼,说到文件大小,VFP怎么调用js代码(示例2),或改写这段代码(示例2)。
谢谢。

js将文件的大小转换成 B KB MB GB的方法教程_js文件大小换算_码云笔记的博客-CSDN博客
https://blog.


程序代码:
TEXT TO jsCode TEXTMERGE NOSHOW PRETEXT 7
// 例1:js 字节转换成 B KB MB GB 的方法
function sizeTostr(size) {
    var data = "";
    if (size < 0.1 * 1024) { //如果小于0.1KB转化成B  
        data = size.toFixed(2) + "B";
    } else if (size < 0.1 * 1024 * 1024) {//如果小于0.1MB转化成KB  
        data = (size / 1024).toFixed(2) + "KB";
    } else if (size < 0.1 * 1024 * 1024 * 1024) { //如果小于0.1GB转化成MB  
        data = (size / (1024 * 1024)).toFixed(2) + "MB";
    } else { //其他转化成GB  
        data = (size / (1024 * 1024 * 1024)).toFixed(2) + "GB";
    }
    var sizestr = data + "";
    var len = sizestr.indexOf("\.");
    var dec = sizestr.substr(len + 1, 2);
    if (dec == "00") {//当小数点后为00时 去掉小数部分  
        return sizestr.substring(0, len) + sizestr.substr(len + 3, 2);
    }
    return sizestr;
}  

// 例2:js实现KB、MB、GB、TB单位转换
// c 参数:表示要被转化的容量大小,以字节为单
// b 参数:表示如果转换时出小数,四舍五入保留多少位 默认为2位小数
function formatBytes(a, b) { 
    if (0 == a) return "0 B"; 
    var c = 1024, d = b || 2, e = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"], f = Math.floor(Math.log(a) / Math.log(c)); 
    return parseFloat((a / Math.pow(c, f)).toFixed(d)) + " " + e[f];
}
ENDTEXT
js = CREATEOBJECT("ScriptControl")
js.Language = "JavaScript"
js.AddCode(jsCode)

? "例1:js 字节转换成 B KB MB GB 的方法"
? js.run("sizeTostr", 1000)
? js.run("sizeTostr", 102400)
? js.run("sizeTostr", 10240000)
? js.run("sizeTostr", 1000111111)
?
? "例2:js实现KB、MB、GB、TB单位转换"
? js.run("formatBytes",1234)
? js.run("formatBytes",1234, 3)
? js.run("formatBytes",123400, 3)
? js.run("formatBytes",12340000, 3)
? js.run("formatBytes",12340000000, 3)
? js.run("formatBytes",12340000000000, 3)
? js.run("formatBytes",1234000000000000, 3)
2023-04-20 10:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 23楼 sostemp
win32 API StrFormatByteSize()
2023-04-20 11:05
sostemp
Rank: 4
等 级:业余侠客
威 望:8
帖 子:162
专家分:221
注 册:2009-6-2
得分:0 
谢谢版主,原来这样调用JS。
可能是电脑太差吧,重启电脑后,也得45秒。

2023-04-20 11:11
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
谢谢!
2023-04-20 11:21
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:4 
以下是引用吹水佬在2023-4-20 11:05:24的发言:

win32 API StrFormatByteSize()

谢谢提醒,用这个也不错
程序代码:
Clear
? FormatBytes(1234)
? FormatBytes(123400)
? FormatBytes(12340000)
? FormatBytes(12340000000)
? FormatBytes(12340000000000)
? FormatBytes(1234000000000000)
? FormatBytes(1234000000000000000)

Function FormatBytes(tnSize)
    Local nLow, nHigh, nLen, cBuff
    m.nLow  = Mod(m.tnSize, 0x100000000)
    m.nHigh = Int(m.tnSize / 0x100000000)
    m.nLen  = 20
    m.cBuff = Replicate(Chr(0), m.nLen)
    StrFormatByteSize64(m.nLow, m.nHigh, @ m.cBuff, m.nLen)
    Return Rtrim(m.cBuff, Chr(0))
EndFunc
Function StrFormatByteSize64(low64, high64, pszBuf, cchBuff)
    Declare Long StrFormatByteSize64 in shlwapi Long, Long, String @, Long
    Return StrFormatByteSize64(m.low64, m.high64, m.pszBuf, m.cchBuff)
EndFunc
2023-04-20 12:28
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用csyx在2023-4-20 12:28:27的发言:


谢谢提醒,用这个也不错
Clear
? FormatBytes(1234)
? FormatBytes(123400)
? FormatBytes(12340000)
? FormatBytes(12340000000)
? FormatBytes(12340000000000)
? FormatBytes(1234000000000000)
? FormatBytes(1234000000000000000)

Function FormatBytes(tnSize)
    Local nLow, nHigh, nLen, cBuff
    m.nLow  = Mod(m.tnSize, 0x100000000)
    m.nHigh = Int(m.tnSize / 0x100000000)
    m.nLen  = 20
    m.cBuff = Replicate(Chr(0), m.nLen)
    StrFormatByteSize64(m.nLow, m.nHigh, @ m.cBuff, m.nLen)
    Return Rtrim(m.cBuff, Chr(0))
EndFunc
Function StrFormatByteSize64(low64, high64, pszBuf, cchBuff)
    Declare Long StrFormatByteSize64 in shlwapi Long, Long, String @, Long
    Return StrFormatByteSize64(m.low64, m.high64, m.pszBuf, m.cchBuff)
EndFunc

VFP对64位不好处理(或者可以强制数据类型转换),试试无符号64位整数最大值0xFFFFFFFFFFFFFFFF (18446744073709551615)
? FormatBytes(18446744073709551615) 返回 0 字节
另 ? FormatBytes(1234) 看不到输出结果? 好像第一句总是“空”
2023-04-20 15:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511963-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018487 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved