统计一段字符串的字节数

文章介绍了一个JavaScript函数`countStrBytesLength`,用于计算包含英文和中文的字符串所占的字节数。函数通过遍历字符串并检查每个字符的Unicode码值来确定其占用的字节数,英文字符占1字节,汉字占2字节。示例中,字符串`helloworld!欢迎你`的字节数为19。

提示:‘字节’是存储容量的一种计量单位;英文字母及空格占用一个字节,汉字占用两个字节。

    //统计一段字符串字节数
    function countStrBytesLength(str){
        let byteCount = 0
        for(let i=0; i<str.length;i++){
            if( str.charCodeAt(i) <= 255 ){
                byteCount ++
            }else{
                byteCount += 2
            }
        }
        return byteCount
    }
    const str = "hello world! 欢迎你"
    const byteLen = countStrBytesLength(str)
    console.log("byteLen",byteLen); //19

### 汇编语言实现字符串统计的课程设计方法与示例代码 在汇编语言中,字符串统计通常涉及对字符串中的字符进行逐一读取和计数。以下是一个典型的实现方法以及示例代码[^1]。 #### 方法概述 1. 使用寄存器或内存变量存储计数器。 2. 通过循环逐个读取字符串中的字符。 3. 利用条件跳转指令(如 `JNZ` 或 `JE`)判断是否到达字符串末尾。 4. 在每次循环中,增加计数器值。 5. 输出最终的计数值。 #### 示例代码 以下是一个简单的汇编语言程序,用于统计字符串中的字符个数[^3]: ```asm ; 定义数据段 DATA SEGMENT STRING DB 'Hello, World!', '$' ; 输入字符串,以'$'结尾 COUNT DB 0 ; 计数器初始化为0 DATA ENDS ; 定义代码段 CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA ; 初始化数据段寄存器 MOV DS, AX LEA SI, STRING ; 将字符串地址加载到SI寄存器 XOR CX, CX ; 清零计数器CX COUNT_LOOP: MOV AL, [SI] ; 从SI指向的内存位置读取一个字节到AL CMP AL, '$' ; 判断是否到达字符串末尾 JE END_COUNT ; 如果是,结束计数 INC SI ; 否则,指针后移一位 INC CX ; 增加计数器值 JMP COUNT_LOOP ; 继续循环 END_COUNT: MOV COUNT, CL ; 将计数结果保存到COUNT变量中 EXIT: MOV AH, 4CH ; 调用DOS中断退出程序 INT 21H CODE ENDS END START ``` #### 代码解析 - `STRING` 是输入字符串,使用 `$` 作为字符串结束标志。 - `COUNT` 变量用于存储最终的字符计数值。 - 循环通过 `LEA` 和 `INC` 指令逐个访问字符串中的字符,并通过 `CMP` 指令检查是否到达字符串末尾。 - 最终的计数值存储在寄存器 `CX` 中,并可通过进一步处理输出。 #### 注意事项 1. 字符串必须有明确的结束标志(如 `$`),否则程序无法正确判断字符串的结束位置。 2. 如果需要统计特定字符的数量,可以在循环中添加额外的条件判断逻辑。 3. 输出结果时,可能需要将二进制计数值转换为 ASCII 码形式以便显示[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值