2020-08-31 03:18发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
尊敬的专家,
我有一个来自#C的十六进制数据类型的代码,如下所示
0x01,它将在串行端口中读取为01
如何将其转换为abap代码?
数据:x输入i。
x = cl_abap_codepage => convert_to('0x02')
预期结果应为2
但我得到813183026
谢谢
山姆
要将包含FF十六进制值(十进制255)的一个字节转换为整数变量:
DATA:字节TYPE x LENGTH 1, 整数TYPE i。 字节='FF'。 整数=字节。 ASSERT整数= 255。
ABAP文档 -基本数据对象的转换规则►源字段类型x►数字目标字段:
PS:关于您的问题的其他说明:
" ABAP将0x ..."解释为两个字符,没有特殊含义。
如果要表示字节值:
数据字节类型x长度1。 字节='FF'。 "这两个字符FF被解释为十六进制,因为字节的类型为X DATA(byte_string)= CONV xstring('FF00FF00')。 " 4字节/解释为六字节,因为键入XSTRING
有关更多信息: ABAP文档-基本数据对象的转换规则
cl_abap_codepage的CONVERT_TO方法通过使用编码将文本(" 0x02"是四个字符)转换为字节 参数,其默认值为UTF-8(在您的情况下,所有四个字符都是US-ASCII的一部分,所以它是四个字节,十六进制表示为'30783032')。
但是您将其传输到整数变量, 因此适用从X到I的标准转换规则(请参阅上面的链接中的说明),该规则将给出813183026(如在"程序员"模式下在Windows计算器中看到的:按"十六进制",键入" 30783032",然后看到" 813 183" " DEC"旁边的" 026"。)请注意,如果您的系统是Little Endian类型,SAP也可能会给出" 842 037 296"。
请使用CODE按钮格式化您的 代码,以便它 以更用户友好的格式显示(彩色)。
@ @ Sandra Rossi ,您应该将注释转换为答案
Frederic Girod 完成。 一切都合并为一个答案。
最多设置5个标签!
要将包含FF十六进制值(十进制255)的一个字节转换为整数变量:
ABAP文档 -基本数据对象的转换规则►源字段类型x►数字目标字段:
PS:关于您的问题的其他说明:
" ABAP将0x ..."解释为两个字符,没有特殊含义。
如果要表示字节值:
有关更多信息: ABAP文档-基本数据对象的转换规则
cl_abap_codepage的CONVERT_TO方法通过使用编码将文本(" 0x02"是四个字符)转换为字节 参数,其默认值为UTF-8(在您的情况下,所有四个字符都是US-ASCII的一部分,所以它是四个字节,十六进制表示为'30783032')。
但是您将其传输到整数变量, 因此适用从X到I的标准转换规则(请参阅上面的链接中的说明),该规则将给出813183026(如在"程序员"模式下在Windows计算器中看到的:按"十六进制",键入" 30783032",然后看到" 813 183" " DEC"旁边的" 026"。)请注意,如果您的系统是Little Endian类型,SAP也可能会给出" 842 037 296"。
请使用CODE按钮格式化您的 代码,以便它 以更用户友好的格式显示(彩色)。
@ @ Sandra Rossi ,您应该将注释转换为答案
Frederic Girod 完成。 一切都合并为一个答案。
一周热门 更多>