我正在尝试将阿拉伯文本编码为十六进制,以便将其发送到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
请帮助您为我的打印机获取正确的十六进制格式。
答案 0 :(得分: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();
我希望这是您需要的:)