1

我正在尝试将阿拉伯文本编码为十六进制,以便将其发送到 POS 打印机。

 byte[] bytes1 = Encoding.UTF8.GetBytes("عمر");
    Array.Reverse(bytes1);
    var hexString = BitConverter.ToString(bytes1);
    hexString = hexString.Replace("-", "");


    MyPrinter.PrintAr(hexString);

但我仍然得到我的打印机理解的错误十六进制格式。我需要的格式应该是这样的:

\uFEA3

我也试过下面的代码:

byte[] bytes1 = Encoding.Unicode.GetBytes("عمر");
         Array.Reverse(bytes1);
        int counter = 0;
        var value=""     ;
        string var2 = "";
        foreach (byte letter in bytes1)
        {
            // Get the integral value of the character.


            // Convert the decimal value to a hexadecimal value in string form.
            if (counter == 0)
            {

                counter = 1;
                  value =  letter.ToString() ;
            }
            else
            {
                value += letter.ToString();
                var2 = Convert.ToUInt16(value).ToString();
                insert = "\\u" + var2;
                counter = 0;
            }

            hexOutput += insert;


        } 

但仍然得到具有数字格式的十六进制,例如:

\u0669

请您帮忙为我的打印机获取正确的十六进制格式。

4

1 回答 1

0

你可以使用这个。它将 Unicode 文本编码为字符串组。每个字符都编译为一个 4 位十六进制数:

string textInput = "عمر"
StringBuilder stringBuilder = new StringBuilder();
foreach (char character in textInput)
{
    stringBuilder.Append(Convert.ToString(character, 16).PadLeft(4,'0'));
}
string hex = stringBuilder.ToString();

我希望这是你需要的:)

于 2018-08-16T21:12:40.027 回答