用什么函数可以取得一个字符串的字节数?

LiaoCheng 2004-10-05 06:53:38
用什么函数可以取得一个字符串的字节数?
RT
...全文
522 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2004-10-06
  • 打赏
  • 举报
回复
用过VB5.0或者更早版本的读者应该知道VB有一个测试字符串长度的函数: Len。但当你升级到VB6时,会发现这里的Len并没有以前那么好用了——它变成了测试字符个数而不是字符串长度。就是说,当你用以前版本的VB执行Len("字符abc")时,返回值是7,因为中文字符每个有2个字节,所以总共有7个字节;而在VB6中执行,返回值是5。
  VB6不再有一个直接计算出字符串总字节数的函数了,因为VB6内部已经把字符串转换成了Unicode——一种比ANSI更新的字符编码方式。

  Unicode把每一个字,无论是中文还是其他文字都当成两个字节,如果是英文,则这两个字节中第二个字节保留着不使用,如果是双字节字符(如中文,双字节日文以及韩文),而由这两个字节的组合表示一个字符。所以Len可以方便地知道一共有多少个双字节字符,多少个单字节字符,也就出现了上面所说的情况。
  不过既然VB内部把ANSI字符转换成Unicode,那么它一定有对应方法转换回来。所以这里提供一个比较方便的方法来得到总字节数: LenB(StrConv("字符abc", vbFromUnicode))。
这里用到了一个LenB() 函数,你可以自己试试它,比如 LenB("字符")、LenB("abc")、LenB("字符abc"),会发现返回值分别是4、6和10。
  为什么是4、6和10呢?
  我说过VB内部把ANSI字符转换为Unicode,每个Unicode字符用2个字节来表示,所以,LenB() 的作用是返回字符串的实际字节数。但是,这个实际字节数已经不是我所输入的字符串的,而是被VB转换过的(我们无法让VB函数在转换之前先算好长度),所以我们需要先把字符串转换回来,使用的是 StrConv() 函数。
  对于这个函数我不想太过详细解释它(一般应用中比较少用),你可以参考MSDN,我只提一提它的第二个参数:vbFromUnicode。

  StrConv()函数的第二个函数指定转换的类型,vbFromUnicode 指定把字符串从Unicode转换回来,如果是vbUnicode,则把字符串转换为Unicode。注意,虽然你的程序中写的是ANSI的字符而不是Unicode字符,但当这个函数执行时,它得到的却是已经被转换成为Unicode的字符串了。
  现在问题可以算解决了,但我们还需要另一个解决方法,因为这种方法太费时。想想看,每一次算长度都要进行 Unicode->ANSI 的转换,这将会花费太多时间。对少量字符还可以,对长字符串,时间就变得更长了。
  所以我们再讲一个API:lstrlen。


Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long

  以上是lstrlen的声明。lstrlen的作用只有一个:
  得到以chr(0)为结尾的字符串的字节数。所以执行 lstrlen("字符abc"+chr(0)) 将返回7。我们不需要知道它内部是如何工作的,但它总是返回该字符串是ANSI时的长度,并且速度很快
chenyu5188 2004-10-06
  • 打赏
  • 举报
回复
lenB()
haohaohappy 2004-10-06
  • 打赏
  • 举报
回复
lenb不是可以嘛
xieyangf 2004-10-06
  • 打赏
  • 举报
回复
用LenB()函数
ryuginka 2004-10-06
  • 打赏
  • 举报
回复
LenB()函数
LiaoCheng 2004-10-06
  • 打赏
  • 举报
回复
to: rainstormmaster(暴风雨 v2.0) ( ) 信誉:228

你的回答太精彩了!!我喜欢!!

BlueBeer 2004-10-05
  • 打赏
  • 举报
回复
Len("ABC测试") = 5
LenB("ABC测试") = 10
LenB(StrConv("ABC测试", vbFromUnicode)) = 7
xiuyuan 2004-10-05
  • 打赏
  • 举报
回复
用lenb()函数在6.0和5.0版本中得到的结果是不一样的
rainstormmaster 2004-10-05
  • 打赏
  • 举报
回复
用lenb:
Dim s As String
s = "CSDN中国最大"
MsgBox LenB(StrConv(s, vbFromUnicode))
dongge2000 2004-10-05
  • 打赏
  • 举报
回复
dim s as string
s="CSDN中国最大"
me.print len(strconv(s,vbfromunicode)
laviewpbt 2004-10-05
  • 打赏
  • 举报
回复
len()函数
Private Sub Form_Load()
Dim str As String
str = "你好!you wish is my command!"
MsgBox Len(str)
End Sub
dongge2000 2004-10-05
  • 打赏
  • 举报
回复
UP
打开链接下载源码: https://pan.quark.cn/s/847069bb2538 标题中所提及的“EPSON L1118 L1119 L3106 L3108 L3115 L3116废墨清零软件+带教程说明.rar”具体指代的是为爱普生(EPSON)品牌下特定系列打印机量身定制的废墨清零专用程序,该系列打印机型号涵盖了L1118、L1119、L3106、L3108、L3115以及L3116等。 废墨清零作为打印机维护过程中的关键步骤,其核心作用在于处理因打印头清洁周期内累积的废墨所引发的打印机故障报警或工作中断现象。 文件描述部分与标题信息保持一致,进一步明确了该压缩文件内含的是针对上述指定型号打印机的废墨计数器重置工具,并且同步提供了操作教程,旨在辅助用户顺利完成软件应用。 在所标注的标签信息中,诸如“L1118废墨清零”之类的关键词,清晰表明了该软件套件是专门为这些特定型号打印机研发的,其根本目的在于清除设备内部记录的废墨数据,从而恢复打印机的标准作业效能。 在压缩文件内部署的文件清单如下:1. DataServiceLapper.dll:此文件可能扮演着服务管理层的动态链接库角色,主要负责处理打印机的相关数据服务,其中可能集成有废墨计数器重置的核心功能。 2. apdadrv.dll:该文件或许属于打印机驱动程序的构成部分,主要功能在于实现软件与打印机硬件之间的交互通讯,用于下达清零指令。 3. StrGene.dll:此动态链接库可能涉及字符串操作或数据加密的相关功能,其用途可能在于验证软件的合法性或保障数据传输的安全性。 4. Adjprog.exe:此文件极有可能为主控程序,用户需通过执行该可执行文件来启动废墨清零流程。 5. 使用说明.txt:该文本文件提供了软...
内容概要:本文深入解析了pytest自动化测试实战项目在软件行业中的应用,涵盖其核心特性、关键技术与实际应用场景。通过构建一个用户管理微服务的API测试项目,详细展示了如何利用pytest的Fixture机制、参数化测试、插件体系和标记系统实现高效、可维护的自动化测试框架。文章强调模块化设计、数据驱动测试及与持续集成系统的无缝整合,并结合具体代码案例阐述最佳实践,最后展望了AI赋能、云原生适配等未来发展方向。; 适合人群:具备Python基础、从事测试或开发工作的工程师,尤其是希望提升自动化测试能力的测试开发人员、QA工程师及DevOps从业者;适合工作1-3年、有一定实践经验的技术人员。; 使用场景及目标:① 掌握pytest在API测试、UI自动化、微服务集成中的落地方法;② 学习如何通过fixture复用、参数化和分层设计提升测试效率与可维护性;③ 将pytest集成到CI/CD流水线中,实现快速反馈与高质量交付。; 阅读建议:此资源以真实项目为导向,建议读者结合代码结构动手实践,重点理解fixture作用域、数据驱动设计与异常断言策略,并尝试引入pytest-cov、pytest-xdist等插件优化测试流程,在实践中掌握从零搭建企业级测试框架的能力。
源码链接: https://pan.quark.cn/s/69b5c1f90e9a Redis作为一款具备出色性能的键值型数据库,在多种应用场景中,如数据缓存与消息队列处理,得到了广泛的应用。在实际环境中部署时,为了保障服务的持续稳定以及资源的高效利用,常常会选用在后台模式下执行Redis。这种后台执行模式能够确保Redis在不干扰终端操作的前提下运行,从而增强整个系统的适应性。文章标题“redis后台启动redis后台启动”明确指出本主题的核心内容是关于如何在后台环境下来启动Redis服务器。描述部分“redis后台启动命令加对应redis.vbe。修改路径然后直接点击”给出了初步的操作指引,但对于初次接触的用户来说,可能显得不够详尽。接下来将全面阐释Redis后台启动的详细流程,并进一步探讨相关的技术要点。1. Redis后台启动指令: Redis在后台模式下启动通常借助`redis-server`指令并配合`--daemonize yes`参数实现。在命令行输入以下指令: ``` redis-server --daemonize yes ``` 此指令将使Redis以守护进程(daemon)的形式执行,即在后台运行且不占用终端界面。2. 配置文件的调整: 通常情况下,Redis的配置文件命名为`redis.conf`。在文件中找到`daemonize`选项,将其参数值设置为`yes`,随后保存并退出。通过这种方式配置后,每次启动Redis时,都会默认采用后台运行模式。启动命令可以简化为: ``` redis-server ```3. 日志文件的配置: 当Redis以守护进程形式运行时,其日志信息会被重定向至`stdout`和`stderr`。为了便...

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧