【CANOE】【学习】【DecodeString】字节转为中文字符输出

news2024/12/23 14:15:24

在这里插入图片描述

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、DecodeString 转为中文字节输出
  • 二、代码举例
    • 1.代码Demo
    • 2.DecodeString 函数说明
      • 函数语法:
      • 参数说明:
      • 返回值:
      • 使用示例:
        • 示例代码:
      • 说明:


前言

有时候使用的时候,需要把报文里面的字节,截取出来,然后转为中文字符,显示或者其他的操作,比如读取出来一个版本号,那么想要核对版本号是否一致的情况下,就可以使用DecodeString。


一、DecodeString 转为中文字节输出

二、代码举例

1.代码Demo



includes
{

  #include "Encoding.cin"//在canoe的里面有内置这个dll 文件,导入
}


on key 'E'{  
  ///  BYTE utf8Data[6] = {0xe4, 0xbd, 0xa0, 0xe5, 0xa5, 0xbd}; // UTF-8 编码的 "你好"
    byte utf8Data[6] = {0xe4, 0xbd, 0xa0, 0xe5, 0xa5, 0xbd}; // UTF-8 编码的 "你好"



    int result;
    char text[100];
    //输出结果缓存为:text,text的长度,传入的字节数组,传入的字节数组长度,类型:CP_UTF8
    result=DecodeString(text,100,utf8Data,6,CP_UTF8);
    if(result==0){
      write("Fail");
      write(text);
    }else{
      write("Fail");
    }
}
//会输出 你好两个中文

2.DecodeString 函数说明

DecodeString 函数用于将字节数组从指定的编码格式解码为当前 CAPL 字符串编码。这个函数对于将某种编码的字节流(例如 UTF-8 编码的字节数组)转换为 CAPL 使用的字符串非常有用。

函数语法:

long DecodeString(char output[], long outputSize, byte input[], long inputSize, dword codepage);

参数说明:

  • output:目标字符数组,用于存储解码后的字符串。
  • outputSize:目标字符数组的大小。
  • input:待解码的输入字节数组。
  • inputSize:输入字节数组的大小。
  • codepage:输入字节数组的编码格式。可以是以下几种编码之一:
    • CP_UTF8
    • CP_UTF16
    • CP_LATIN1
    • CP_SHIFT_JIS

返回值:

  • 0:成功,output 数组包含有效的解码字符串。
  • -1:出现非法字符(例如非法的 UTF8 编码点)。
  • -2:输出数组空间不足,无法存储解码后的字符串和终止符。
  • -3:内部错误。

使用示例:

假设您有一个 UTF-8 编码的字节数组,并想将其转换为 CAPL 字符串,可以使用 DecodeString 函数。

示例代码:
includes
{
  #include "Encoding.cin"
}

on start
{
  int result;
  char text[10];  // 存储解码后的字符串
  byte stream[6] = {0xC3, 0xA4, 0xC3, 0xB6, 0xC3, 0xBC};  // UTF-8 编码的字节流

  // 解码 UTF-8 编码的字节流
  result = DecodeString(text, 10, stream, 6, CP_UTF8);

  if (result == 0) {
    write(text);  // 输出解码后的字符串
    // 输出结果(如果使用的是德语 Windows): äöü
  } else {
    write("Decoding failed!");
  }
}

说明:

  • 上面的例子中,stream 是一个包含 UTF-8 编码的字节流。DecodeString 函数将其解码为一个普通的字符数组 text,并输出解码后的字符串。
  • 如果解码成功,text 数组将包含 äöü(德语字符)并输出。如果解码失败,则输出错误信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2239690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

边缘计算在智能交通系统中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 边缘计算在智能交通系统中的应用 边缘计算在智能交通系统中的应用 边缘计算在智能交通系统中的应用 引言 边缘计算概述 定义与原…

CC1链学习记录

🌸 前言 上篇文章学习记录了URLDNS链,接下来学习一下Common-Colections利用链。 🌸 相关介绍 Common-Colections是Apache软件基金会的项目,对Java标准的Collections API提供了很好的补充,在其基础上对常用的数据结构…

边缘计算在智能物流中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 边缘计算在智能物流中的应用 边缘计算在智能物流中的应用 边缘计算在智能物流中的应用 引言 边缘计算概述 定义与原理 发展历程 …

《多模稳控应急通讯设备技术规范》出炉,应急通讯有章可循!

近日,由深圳市遨游通讯设备有限公司参与的《多模稳控应急通讯设备技术规范》在经历多项严格的审核程序后,由中国中小商会企业协会正式发布实施。该标准详细规定了多模稳控应急通讯设备的术语和定义、产品型号、技术要求、试验方法、检验规则、标志、包装…

生成任意3D和4D场景!GenXD:通用3D-4D联合生成框架 | 新加坡国立微软

文章链接: https://arxiv.org/pdf/2411.02319 项目链接:https://gen-x-d.github.io/ 有视频 亮点直击 设计了一个数据整理流程,从视频中获取包含可移动物体的高质量4D数据,并为30,000个视频标注了相机姿态。这个大规模数据集称为CamVid-30K&…

全面解读:低代码开发平台的必备要素——系统策划篇

在传统开发过程中,系统策划起着举足轻重的作用,它宛如一位幕后的总指挥,把控着整个软件开发项目的走向。而随着技术的不断进步,低代码开发平台逐渐崭露头角,它以快速开发、降低技术门槛等优势吸引了众多企业和开发者的…

如何通过工单池与抢单机制提升企业服务效率与客户满意度?

在许多企业的售后服务或维修管理中,工单管理常常是一个瓶颈。工单处理不及时、任务分配不合理,或者客户的需求没有被准确跟踪,都可能影响到服务质量,进而影响客户满意度。随着企业规模扩大,如何高效管理工单池、合理调…

智慧电厂新纪元:基于亿信ABI的电厂环保指挥管控平台实践

​在当今全球能源转型与环境保护的双重驱动下,电力行业正加速向智能化、绿色化迈进。本案例聚焦于某电厂的智能化转型实践,通过引入先进的烟气达标监测技术与碳资产管理平台,不仅实现了对电厂排放的精准控制,还极大提升了碳数据的…

【C++练习】计算并输出1到10的所有整数的阶乘之和

题目: 计算并输出1到10的所有整数的阶乘之和 描述 编写一个C程序,定义一个函数来计算给定整数n的阶乘,然后在main函数中利用该函数计算从1到10(包括1和10)所有整数的阶乘,并将这些阶乘值累加起来&#x…

51c嵌入式~单片机合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的电平信号的MCU怎么通信? 下面这个“电平转换”电路,理解后令人心情愉快。电路设计其实也可以很有趣。 先说一说这个电路的用途:当两个MCU在不同的工作电压下工作&…

ROM修改进阶教程------安卓14 安卓15去除app签名验证的几种操作步骤 详细图文解析

在安卓14 安卓15的固件中。如果修改了系统级别的app。那么就会触发安卓14 15的应用签名验证。要么会导致修改的固件会进不去系统,或者进入系统有bug。博文将从几方面来解析去除安卓14 15应用签名验证的几种方法。 💝💝💝通过博文了解: 1💝💝💝-----安卓14去除…

抓包工具WireShark使用记录

目录 网卡选择: 抓包流程: 捕获过滤器 常用捕获过滤器: 抓包数据的显示 显示过滤器: 常用的显示过滤器: 实际工作中,在平台对接,设备对接等常常需要调试接口,PostMan虽然可以进…

工单管理系统哪个好用?2000字详细整理

工单管理系统已经成为提高客户服务效率和质量的重要工具。随着市场上可供选择的工单管理系统越来越多,企业在选择合适的系统时常常感到困惑。本文将详细介绍几款主流的工单管理系统,以帮助企业做出明智的选择。 一、工单管理系统的重要性 工单管理系统…

Vim9 语法高亮syntax 在指定的缓冲区和窗口执行命令

背景:从开发,创建makefile、编译、单元测试、到生产部署都只有俺一个人,所以所有的工作都要自己完成,因此有了想法做一个插件,按需实现:构建Makefile,编译、打包、压缩、上传服务器、解压、安装…

群控系统服务端开发模式-应用开发-前端个人资料开发

一、总结 其实程序开发到现在,简单的后端框架就只剩下获取登录账号信息及获取登录账号菜单这两个功能咯。详细见下图: 1、未登录时总业务流程图 2、登录后总业务流程图 二、获取登录账号信息对接 在根目录下src文件夹下store文件夹下modules文件夹下的us…

Harmony- List组件最后一个item显示不全

在使用List组件显示数据的时候会出现最后一个item显示不全的问题,如下 出现在高度问题上,如果List组件上下没有其他占位组件就是正常显示的 解决方案: 1.给List组件加上layoutWeight(1),使它填满父控件剩余空间; 2.还有一种情况…

Go语言实现用户登录Web应用

文章目录 1. Go语言Web框架1.1 框架比较1.2 安装Gin框架 2. 实现用户登录功能2.1 创建项目目录2.2 打开项目目录2.3 创建登录Go程序2.4 创建模板页面2.4.1 登录页面2.4.2 登录成功页面2.4.3 登录失败页面 3. 测试用户登录项目3.1 运行登录主程序3.2 访问登录页面3.3 演示登录成…

25浙江省考--两大模块(数量关系+常识判断)题型积累【2024.12.8考前每日更新】

行政执法C卷,两大模块题量占比:35/115,每题 100 115 \frac{100}{115} 115100​分,时间分配:20~35分钟,留10分钟涂卡 数量关系【题量占比:15/115】【时间分配:15~30分钟】 数字推理…

【掌握未来办公:OnlyOffice 8.2深度使用指南与新功能揭秘】

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 一、功能亮点1. PDF文档的协同编辑2. PDF表单的电子签名3. 界面的现代化改造4. 性能的显著提升5. 文…

AI写作(四)预训练语言模型:开启 AI 写作新时代(4/10)

一、预训练语言模型概述 ​ 预训练语言模型在自然语言处理领域占据着至关重要的地位。它以其卓越的语言理解和生成能力,成为众多自然语言处理任务的关键工具。 预训练语言模型的发展历程丰富而曲折。从早期的神经网络语言模型开始,逐渐发展到如今的大规…