C++ 如何在c++;?

C++ 如何在c++;?,c++,linux,C++,Linux,我使用波斯语(UTF-8)。我想把它转换成十六进制。但我的问题是,首先在Linux操作系统中如何用C++中的十进制值转换波斯字符(我用QT创建者)< /P> < P>你所提到的字符有三字节编码。如果将UTF-8存储在字符数组中,则需要将每个字节转换为十六进制。否则,您可能需要将3字节UTF-8编码转换为UTF-16(16位整数,类似于UCS-2)编码,并显示16位结果的十六进制值。您可以使用此代码将波斯语文本转换为十六进制 byte[] yourStrBytes = Encoding.Get

我使用波斯语(UTF-8)。我想把它转换成十六进制。但我的问题是,首先在Linux操作系统中如何用C++中的十进制值转换波斯字符(我用QT创建者)< /P> < P>你所提到的字符有三字节编码。如果将UTF-8存储在字符数组中,则需要将每个字节转换为十六进制。否则,您可能需要将3字节UTF-8编码转换为UTF-16(16位整数,类似于UCS-2)编码,并显示16位结果的十六进制值。

您可以使用此代码将波斯语文本转换为十六进制

  byte[] yourStrBytes = Encoding.GetEncoding("your encoding").GetBytes("your str");
  string hexStr = BitConverter.ToString(yourStrBytes).Replace("-", "");

您的文本数据使用哪种字符编码?答案很可能取决于这一点。波斯语字符(我认为它是UTF8)。->ابپ等等。当我使用int(ch)时,它不会返回正确的答案。例如,对于“ف”,它应该返回1601,但在Linux中它返回了错误的数字。如果您有8位
char
s,则单个
char
永远不能有值1601。UTF-8是一种可变宽度编码。你可能需要考虑一个字节才能得到一个“字符”。是的,我把每个字符转换成十六进制。我的租船人是2字节(我想不是3字节)。那么,如何定义一个字符类型utf8来设置我的变量呢?我可以为utf-8使用wchar\u t吗?不,wchar\u t是16位(或更多)编码。您可以使用其中的3个来存储这三个字节,但这不是wchar__t的目的。字符پ的UTF-8编码是0xD9 0xBE 0x20,三个字节。如果只有两个字符,则可能有不同的字符或不同的编码。在Linux系统中,有一个“od”(八进制转储)实用程序,它可以使用以下命令转储十六进制字节:“od-t x1”。键入并提供您的输入以查看编码。谢谢。但是我的C++很差。你能把完整的示例源代码。我不知道标题等等。。。我真的很难过和羞愧。thnksI使用了Qchar.unicode,问题得到了解决。谢谢