| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2812 人关注过本帖
标题:求:一个好像很简单的问题,愣是想不到一个很简单的算法?
取消只看楼主 加入收藏
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:348
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-14 09:58:38的发言:
内码是32bit,转换用BINTOC()、CTOBIN(),数值范围-2147483648~2147483647 (内码0x0~0xFFFFFFFF)


对!就是bintoc()!我随手构造N1...N4,就是因为一时忘了这个函数(其实平常经常用到的),呵呵呵呵。

N1 = 1314520520
C1 = bintoc(N1, "4RS")

如此,C1 = 0h4E59FDC8,那么就可以像occu(子字符串, 大字符串)一样地occu(整型值内码字符串, 大字符串)啦!

2023-03-14 10:49
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:348
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-14 11:03:28的发言:
bintoc好像是针对有符号整数


其实有符号或无符号,似乎不太关键,
事关,bintoc()和ctobin()配对,
无论中间过程的值在VFP内部如何处理,最终总能被ctobin()正确还原。
而且在此只是借用整型数的内码值,临时用作了字符串;
具体中间过程的实现细节,权当作透明,直接忽略即可。
事实上,倘若仔细验证过occu()函数运行起来准确无误的话,
直接C1=bintoc(N1)即可,也不必附加标志参数"4RS"。
2023-03-14 11:16
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:348
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用sam_jiang在2023-3-14 12:36:20的发言:

你对occurs是不是有什么误解,这是个字符串函数。


您误解啦。我后边探讨的,正是尝试用类似occurs()这样的字符串函数,去处理整型值数据。
只因某些字符串函数,在处理某些情况下的查询统计时,会比较简单、方便,而数值函数却没有这种便利。
2023-03-14 13:22
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:348
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-14 11:23:22的发言:
不到你“不太关键”,除非你处理的数据小于0x80000000,否则,直接 bintoc(0x80000000, "4RS") 是行不通的。


明白啦!bintoc()第一个参数是有符号整数,它只能接受小于0x80000000正数值,因最高位是符号位。
那么说来,我手动构造4字节无符号整数,反倒是有点用处的。

2023-03-14 13:28
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:348
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-14 13:48:31的发言:
看来26楼说的还没注意到


其实,我针对的是VFP可正确处理的整型数值,或者说,数据类型为“I”的字段值。
只要VFP能正确处理这个数值,那么bintoc()处理起来,应无问题…………难道不是吗?
现在,字符串函数要用到的,正是bintoc(某I值),理论上,不会溢出。
2023-03-14 14:36
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:348
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-14 15:52:40的发言:
DBF的I型数据本身是按内码存放的,不用再转换来转换去,将DBF当作字符来处理就可以。
继续绕


关键是,字符串函数,它不接受数值型参数哇!
话说,脱裤子放P,有时候,绝对是有必要的;
绕,其目的是让这一督P,放将出去后,合规合矩,师出有名。
绕,其本身不是目的,而只是合规所须经历的必要手段。
2023-03-14 16:04
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:348
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-14 16:22:27的发言:
在DBF文件中I型数据本来就是一个内码数据(字符串形式),取出来就是了,还要用什么函数的数值型参数!


你倒是有点儿将我绕糊涂啦。

我当然知道,I型数据在DBF中是以内码存放。
现在是打算在VFP程序代码中,以字符串类型来处理数值型变量值哇:

select MyTable
scan
    * 假设A1...A8都是I型数值字段:
    lcA1 = bintoc(A1)
    lcA1_A8 = bintoc(A1) + " " + bintoc(A2) + " " + bintoc(A3) + " " + bintoc(A4) + " " + bintoc(A5) + " " + bintoc(A6) + " " + bintoc(A7) + " " + bintoc(A8)
    * 简单统计一下,每一行中,A1出现的次数:   
    lnOccu = occu(lcA1, lcA1_A8)
    ? lnOccu
endscan

我有点不明白你的意思了:这样一个简单的“从数值到字符串”的转换,为什么企图借助低级文件处理函数,直接从DBF取出(你所表达的意思,可以这么理解吗?)?


[此贴子已经被作者于2023-3-14 16:48编辑过]

2023-03-14 16:43
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:348
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-14 16:54:29的发言:
文件对于VFP来说,有时是不存在高低级别的


这话说得有些不太专业了。
你搜索一下VFP的帮助文件,王苏汉化版(曾广岷(TLDS_ZGM),王振鹏(RichardWZP),任明汉,王 苏(Wangsuww),都市夜猫(City Owl),……)
搜索关键词:
低级文件函数
2023-03-14 18:20
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:348
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-14 16:54:29的发言:

不要小看VFP,……加上VFP高效的字符串处理能力


恰恰是看中了“VFP高效的字符串处理能力”,楼主这才会突发奇想,特意将数值型数据也转换为字符串,以便利用VFP的字符串函数,去处理一些简单的、无需数值参与计算的统计工作。
2023-03-14 18:33
快速回复:求:一个好像很简单的问题,愣是想不到一个很简单的算法?
数据加载中...
 
   



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

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