中文编解码问题
来源:3-9 请完成Flutter和Android开发环境的搭建
那个逗号
2023-05-06
/*************************************************
Function: Encode8Bit
Description: 进行8Bit编码来压缩数据
Input: tsSrc: 需要压缩的数据
Output: pucDest: 压缩后的数据
Return: 压缩后的字节数
Others: 字符数值在0x00和0xFF之间字符串
压缩代码110
*************************************************/
int CISO15962::Encode8Bit(ubyte* pucDest, tstring tsSrc)
{
if (pucDest == NULL || tsSrc.empty())
return -1;
mstring strSrc = t2a(tsSrc);
int iLen = strSrc.length();
strcpy_s((char*)pucDest, iLen+1, strSrc.c_str());
return iLen;
}
如上,是一段C++的编码代码,我现在的需求是将一段字符串(包含中文)进行输入,用此方法进行编码,然后输出16进制的编码字符串,
- 例如 输入
ubyte uc8Back[128] = { 0 }; Encode8Bit(uc8Back, _T("五十多个"));
编码后的16进制字符串为CEE5CAAEB6E0B8F6
,
- 需求,我需要将此方法转为dart 的语言,我尝试用
convert.Utf8Encoder().convert()
,但是由于此方法不能编解码中文,所以失败。 - 请问:dart 版本的方法该怎么写?
写回答
2回答
-
试试这个,如果还是不行就没好的办法了
final str = '五十多个';
final bytes = utf8.encode(str);
final hexStr = hex.encode(bytes);
print(hexStr);012023-05-09 -
CrazyCodeBoy
2023-05-08
在Dart中,可以使用convert包中的Latin1Encoder和HexEncoder实现类似的功能。示例代码如下:
```dart
import 'dart:convert';
void main() {
final str = '五十多个';
final bytes = latin1.encode(str);
final hexStr = hex.encode(bytes);
print(hexStr); // 输出 CEE5CAAEB6E0B8F6
}
```
其中,`latin1.encode()`将字符串编码为Latin1字符集的字节数组(相当于C++中的8位编码);`hex.encode()`将字节数组编码为16进制字符串。
需要注意的是,这里使用的是Latin1编码而非UTF-8编码,因为C++中的`Encode8Bit`方法是将字符串转换为8位编码的。如果需要使用UTF-8编码,可以使用`utf8.encode()`方法代替`latin1.encode()`。012023-05-08
相似问题