news 2026/6/11 1:01:40

2*8的lcd显示屏自动居中

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2*8的lcd显示屏自动居中

一、核心代码(直接可用)

1️⃣ 计算 GBK 显示宽度

int gbkWidth(const std::string &s) { int w = 0; for (size_t i = 0; i < s.size(); ) { unsigned char c = s[i]; if (c & 0x80) { // GBK 中文 w += 2; i += 2; } else { w += 1; i += 1; } } return w; }

2️⃣ 按 8 位拆成两行(GBK 安全)

void splitToTwoLines(const std::string &src, std::string &line1, std::string &line2) { int w = 0; size_t i = 0; // 第一行 for (; i < src.size(); ) { unsigned char c = src[i]; int cw = (c & 0x80) ? 2 : 1; if (w + cw > 8) break; line1.append(src, i, cw == 2 ? 2 : 1); w += cw; i += (cw == 2 ? 2 : 1); } // 第二行(最多 8 位) w = 0; for (; i < src.size(); ) { unsigned char c = src[i]; int cw = (c & 0x80) ? 2 : 1; if (w + cw > 8) break; line2.append(src, i, cw == 2 ? 2 : 1); w += cw; i += (cw == 2 ? 2 : 1); } }

3️⃣ 自动居中主函数(你要的返回 string)

std::string autoCenterGBK_2x8(const std::string &text) { std::string line1, line2; splitToTwoLines(text, line1, line2); int w1 = gbkWidth(line1); int w2 = gbkWidth(line2); // 第一行不满 → 第一行居中 if (w1 < 8) { int left = (8 - w1) / 2; line1 = std::string(left, ' ') + line1; } // 第一行满,第二行不满 → 第二行居中 else if (w2 < 8 && !line2.empty()) { int left = (8 - w2) / 2; line2 = std::string(left, ' ') + line2; } return line1 + "\n" + line2; }

二、效果示例

✅ 示例 1:第一行 3 个中文(6 位)

auto s = autoCenterGBK_2x8("中国人");

显示:

中国人

✅ 示例 2:第一行满 4 个中文,第二行 2 个中文

auto s = autoCenterGBK_2x8("中华人民共和国你好");

显示:

中华人民 共和国你

✅ 示例 3:正好一行 4 个中文

auto s = autoCenterGBK_2x8("测试程序");

显示:

测试程序
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 16:02:20

鸿蒙HarmonyOS多线程编程实战:AI语音

在智能终端设备日益普及的今天&#xff0c;AI 语音应用——如语音助手、实时转写、声纹识别等——已成为用户交互的重要入口。然而&#xff0c;这类应用对响应速度、流畅性和系统资源调度提出了极高要求。若处理不当&#xff0c;极易出现卡顿、延迟甚至崩溃&#xff0c;严重影响…

作者头像 李华
网站建设 2026/6/10 18:42:59

机器人操作空间速度计算python几种实现函数

def compute_V0_screw_motion(x, R, xd, Rd, max_lin_vel0.05, max_ang_vel0.1, beta1.0):"""基于螺旋运动理论计算引导速度&#xff0c;更符合物理运动参数&#xff1a;beta: 收敛速度系数"""# 计算位置误差pos_error xd - x# 计算姿态误差&am…

作者头像 李华
网站建设 2026/6/10 21:46:16

基于SpringBoot的企业合同管理系统设计与实现(程序+文档+讲解)

课题介绍在企业合同规范化管控、全生命周期管理需求升级的背景下&#xff0c;传统合同管理存在 “版本混乱、审批流程长、履约监控缺失” 的痛点&#xff0c;基于 SpringBoot 构建的企业合同管理系统&#xff0c;适配合同专员、法务、部门负责人、管理层等多角色&#xff0c;实…

作者头像 李华
网站建设 2026/6/10 20:06:49

28、Linux 文件共享与备份全攻略

Linux 文件共享与备份全攻略 1. NFS 文件共享 NFS(网络文件系统)是一种在网络中共享文件的有效方式,使用 NFS 共享文件主要涉及两个基本步骤: - 在 NFS 服务器上,将一个或多个目录列在 /etc/exports 文件中,并运行 /usr/sbin/exportfs 命令来导出这些目录,同时要…

作者头像 李华
网站建设 2026/6/10 20:12:45

34、Linux系统安全防护全攻略

Linux系统安全防护全攻略 1. 文件加密 若仅需对文件进行加密,且无需他人解密,可使用GPG进行对称加密。操作步骤如下: 1. 执行命令 gpg -o secret.gpg -c somefile ,GPG会提示输入密码并要求再次输入以确认。之后,GPG会使用从密码生成的密钥对文件进行加密。 2. 若要…

作者头像 李华