社区
VB基础类
帖子详情
用什么函数可以取得一个字符串的字节数?
LiaoCheng
2004-10-05 06:53:38
用什么函数可以取得一个字符串的字节数?
RT
...全文
492
12
打赏
收藏
用什么函数可以取得一个字符串的字节数?
用什么函数可以取得一个字符串的字节数? RT
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
编写
一个
截取
字符串
的
函数
,输入为
一个
字符串
和
字节数
编写
一个
截取
字符串
的
函数
,输入为
一个
字符串
和
字节数
, 输出为按字节截取的
字符串
,但要保证汉字不被截取半个, 如"我ABC", 4,应该截取"我AB",输入"我ABC汉DEF", 6, 应该输出"我ABC",而不是"我ABC+汉的半个"。 知识点: String中常用的方法 gbk中
一个
汉字两个字节 public static void main(String[] args) { // S..
题目:编写
一个
截取
字符串
的
函数
,输入为
一个
字符串
和
字节数
,输出为按字节截取的
字符串
。
题目: 编写
一个
截取
字符串
的
函数
,输入为
一个
字符串
和
字节数
,输出为按字节截取的
字符串
,但要保证汉字不被截取半个,如输入“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。 public class Test { public static void main(String[] args) throws Exception ...
java面试: 编写
一个
截取
字符串
的
函数
,输入为
一个
字符串
和
字节数
,输出为按字节截取的
字符串
。
编写
一个
截取
字符串
的
函数
,输入为
一个
字符串
和
字节数
,输出为按字节截取的
字符串
。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。 思路: 判断是否为空 不为空的话判断截取的
字节数
,如果
字节数
大于
字符串
长度,就设置为截取所有
字节数
的长度 截半的话对应字节的ASC码为小于0的数值 import...
python哪
一个
函数
可以获取
字符串
的长度_pythonlen()
函数
的详细说明:获取
字符串
的长度或
字节数
...
Python 中,要想知道
一个
字符串
有多少个字符(获得
字符串
长度),或者
一个
字符串
占用多少个字节,可以使用 len
函数
。len
函数
的基本语法格式为:len(string)其中 string 用于指定要进行长度统计的
字符串
。例如,定义
一个
字符串
,内容为“http://c.biancheng.在Python中,如果您想知道
一个
字符串
有多少个字符(以获取
字符串
长度),或者
一个
字符串
占用了多少字节,...
5.3 Python len()
函数
:获取
字符串
长度或
字节数
在 Python 中,不同的字符所占的
字节数
不同,数字、英文字母、小数点、下划线以及空格,各占
一个
字节,而
一个
汉字可能占 2~4 个字节,具体占多少个,取决于采用的编码方式。因为汉字加中文标点符号共 7 个,占 21 个字节,而英文字母和英文的标点符号占 6 个字节,一共占用 27 个字节。中,要想知道
一个
字符串
有多少个字符(获得
字符串
长度),或者
一个
字符串
占用多少个字节,可以使用 len
函数
。在实际开发中,除了常常要获取
字符串
的长度外,有时还要获取
字符串
的
字节数
。图 1 汉字和英文所占
字节数
。
VB基础类
7,785
社区成员
197,585
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章