gpt4 book ai didi

c++ - 需要将16位数据转换成8位

转载 作者:行者123 更新时间:2023-11-28 07:21:55 29 4
gpt4 key购买 nike

int main()
{
char str[200] = {0};
char out[500] = {0};

str[0]=0x00; str[1]=0x52; str[2]=0x00; str[3]=0x65; str[4]=0x00; str[5]=0x73; str[6]= 0x00; str[7]=0x74;

for(int i=0;i<sizeof(str);i++)
cout<<"-"<<str[i];
changeCharEncoding("UCS-2","ISO8859-1",str,out,sizeof(out));
cout<<"\noutput : "<<out;
for(int i=0;i<sizeof(out);i++)
cout<<":"<<out[i];
}

//encoding function
int changeCharEncoding(const char *from_charset, const char *to_charset, const char *input, char *output, int out_size)
{
size_t input_len = 8;
size_t output_len = out_size;
iconv_t l_cd;
if ((l_cd = iconv_open (to_charset, from_charset)) == (iconv_t) -1)
{
return -1;
}
int rc = iconv(l_cd, (char **)&input, &input_len, (char **)&output, &output_len);
if (rc == -1)
{
iconv_close(l_cd);
return -2;
}
else
{
iconv_close(l_cd);
}
}

请给我一个将 16 位数据转换为 8 位数据的方法。我已经用 iconv 试过了。如果还有其他事情可以做同样的事情,也建议我。

最佳答案

看起来您正在尝试在 UTF-16UTF-8 编码之间进行转换:尝试将 changeCharEncoding() 的调用更改为:

changeCharEncoding("UTF-16","UTF-8",str,out,sizeof(out));

生成的 UTF-8 输出应该是

刀攀猀琀

旁注:您的代码中有几处您应该考虑改进。例如,changeCharEncodingmain 都被声明为返回一个 int,而您的实现却没有。

关于c++ - 需要将16位数据转换成8位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19325985/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com