| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3010 人关注过本帖
标题:求:一个好像很简单的问题,愣是想不到一个很简单的算法?
只看楼主 加入收藏
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分: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
帖 子:351
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-14 11:23:22的发言:
不到你“不太关键”,除非你处理的数据小于0x80000000,否则,直接 bintoc(0x80000000, "4RS") 是行不通的。


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

2023-03-14 13:28
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用cssnet在2023-3-14 13:28:21的发言:

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

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


其实,我针对的是VFP可正确处理的整型数值,或者说,数据类型为“I”的字段值。
只要VFP能正确处理这个数值,那么bintoc()处理起来,应无问题…………难道不是吗?
现在,字符串函数要用到的,正是bintoc(某I值),理论上,不会溢出。
2023-03-14 14:36
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用cssnet在2023-3-14 14:36:01的发言:



其实,我针对的是VFP可正确处理的整型数值,或者说,数据类型为“I”的字段值。
只要VFP能正确处理这个数值,那么bintoc()处理起来,应无问题…………难道不是吗?
现在,字符串函数要用到的,正是bintoc(某I值),理论上,不会溢出。

DBF的I型数据本身是按内码存放的,不用再转换来转换去,将DBF当作字符来处理就可以。
继续绕
2023-03-14 15:52
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-14 15:52:40的发言:
DBF的I型数据本身是按内码存放的,不用再转换来转换去,将DBF当作字符来处理就可以。
继续绕


关键是,字符串函数,它不接受数值型参数哇!
话说,脱裤子放P,有时候,绝对是有必要的;
绕,其目的是让这一督P,放将出去后,合规合矩,师出有名。
绕,其本身不是目的,而只是合规所须经历的必要手段。
2023-03-14 16:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用cssnet在2023-3-14 16:04:47的发言:



关键是,字符串函数,它不接受数值型参数哇!
话说,脱裤子放P,有时候,绝对是有必要的;
绕,其目的是让这一督P,放将出去后,合规合矩,师出有名。
绕,其本身不是目的,而只是合规所须经历的必要手段。

又绕到哪去了,什么字符串函数,它不接受数值型参数哇!
在DBF文件中I型数据本来就是一个内码数据(字符串形式),取出来就是了,还要用什么函数的数值型参数!
这样看看:
CREATE TABLE c:\temp\tt (f1 I,f2 n(16))
INSERT INTO tt VALUES (-2147483648,123456789012346)
tt.dbf文件内容,图中红框框的 00 00 00 80 就是F1的-2147483648,直接取出 00 00 00 80 就是了。
图片附件: 游客没有浏览图片的权限,请 登录注册


2023-03-14 16:22
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分: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
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 38楼 cssnet
给个实实在在的DBF测试好了,例举的也行。
2023-03-14 16:50
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用cssnet在2023-3-14 16:43:19的发言:
我有点不明白你的意思了:这样一个简单的“从数值到字符串”的转换,为什么企图借助低级文件处理函数,直接从DBF取出(你所表达的意思,可以这么理解吗?)?

不要小看VFP,文件对于VFP来说,有时是不存在高低级别的,尤其是当作字符串处理。不是有STRTOFILE、FILETOSTR吗,这些不低级吧。
加上VFP高效的字符串处理能力,对于你这类问题还真不用USE操作字段。



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

2023-03-14 16:54
快速回复:求:一个好像很简单的问题,愣是想不到一个很简单的算法?
数据加载中...
 
   



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

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