自学内容网 自学内容网

【CANOE】【学习】【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 数组将包含 äöü(德语字符)并输出。如果解码失败,则输出错误信息。

原文地址:https://blog.csdn.net/weixin_43444734/article/details/143747075

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!