2020-08-30 13:57发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
尊敬的专家,
我在下面尝试了这段代码将十六进制转换为字符串,但是为什么结果变成###
数据转换类型参考cl_abap_conv_in_ce。 数据缓冲区(4)TYPE x。 数据文本(100)TYPE c。 缓冲区='02'。 " conv = cl_abap_conv_in_ce => create( encoding ='UTF-8')。 转换->转换( 导出输入=缓冲区 导入数据=文本)。
请咨询。
谢谢
答案很简单,因为abap中的十六进制是16位,与此不相同。 abap中的所有内容都必须乘以100。如果我对其进行调整,则#不会出现。
有一个非常有用的类进行转换CL_BCS_CONVERT
没有看到任何问题。 您的代码正常运行。 您的代码正在转换十六进制值02000000(它定义为X长度4,因此它是= 02 00 00 00)。结果完全是"控制字符" U + 0002 。
也许您想转换数字2(数字二)字符?在HEX中不是02,而在HEX中是32( U + 0032)。 检查例如 https://www.utf8-chartable.de/或类似的十六进制/UTF-8字符表。
是否尝试相反的操作?
数据六类型xstring值'02'。 data(dec)=转换字符串(hexa)。 写十月。 dec = 2。 hexa =十进制 写六。
在ABAP Unicode系统中(任何版本> = 7.50的系统只能是Unicode),一个字符占用两个字节。 您要做的是将代表UTF-8"字符"的十六进制值为02.00.00.00的四个字节转换为ABAP字符。 如果您的系统是Unicode(UTF-16)大字节序,则将获得四个十六进制值0002.0000.0000.0000的字符。 小尾数:0200.0000.0000.0000。 您可以看到在调试器中,您可以显示字符的十六进制表示形式。
最多设置5个标签!
答案很简单,因为abap中的十六进制是16位,与此不相同。 abap中的所有内容都必须乘以100。如果我对其进行调整,则#不会出现。
有一个非常有用的类进行转换CL_BCS_CONVERT
没有看到任何问题。 您的代码正常运行。
您的代码正在转换十六进制值02000000(它定义为X长度4,因此它是= 02 00 00 00)。
结果完全是"控制字符" U + 0002 。
也许您想转换数字2(数字二)字符?
在HEX中不是02,而在HEX中是32( U + 0032)。 检查例如 https://www.utf8-chartable.de/或类似的十六进制/UTF-8字符表。
是否尝试相反的操作?
在ABAP Unicode系统中(任何版本> = 7.50的系统只能是Unicode),一个字符占用两个字节。 您要做的是将代表UTF-8"字符"的十六进制值为02.00.00.00的四个字节转换为ABAP字符。 如果您的系统是Unicode(UTF-16)大字节序,则将获得四个十六进制值0002.0000.0000.0000的字符。 小尾数:0200.0000.0000.0000。 您可以看到在调试器中,您可以显示字符的十六进制表示形式。
一周热门 更多>