我正在尝试解码使用 \ x 为某些“特殊字符”添加前缀的文字。我已经手工制作了以下映射:
\x28 (
\x29 )
\x3a :
e.g. 12\x3a39\x3a03 AM
有人认识到这种编码是什么吗?
答案 0 :(得分:31)
这是ASCII。所有出现的四个字符\xST
都将转换为1个字符,其ASCII代码为ST
(hexadecimal},其中S
和T
为任意一个0123456789abcdefABCDEF
。
答案 1 :(得分:17)
在C,C ++,Perl以及从C中获取提示的其他语言中使用'\xAB'
表示法,作为在字符串中间表达十六进制字符代码的一种方式。
符号'\007'
表示在反斜杠后面有数字时使用八进制代码。
在C99及更高版本中,您还可以使用\uabcd
和\U00abcdef
对十六进制的Unicode字符进行编码(需要4位和8位十六进制数字; \U
中的前两位十六进制数字必须0
有效,通常第三位数也是0
- 1
是唯一的其他有效值。
请注意,在C中,八进制转义限制为最多3位数,但十六进制转义不限于2或3位数;十六进制转义结束于第一个不是十六进制数字的字符。在问题中,序列为"12\x3a39\x3a03"
。这是一个包含4个字符的字符串:1
,2
,\x3a39
和\x3a03
。用于4位十六进制字符的实际值是实现定义的。要获得所需的结果(使用\x3A
表示冒号:
),代码必须使用字符串连接:
"12\x3a" "39\x3a" "03"
现在包含8个字符:1
,2
,:
,3
,9
,:
,0
,3
。
答案 2 :(得分:0)
我猜你正在处理的是一个unicode字符串,其编码方式与发送到的输出流的编码方式不同。即。一个utf-16字符串输出到latin-1设备。在这种情况下,某些字符将作为转义值输出,以避免将控制字符或错误字符发送到输出设备。这至少发生在python中。
答案 3 :(得分:0)
我用CyberChef做这种事情。
如果您从“收藏夹”列表中drop it in the input field and drag Magic进入食谱,它将告诉您转换,并且您可以使用the From_Hex recipe with a \x delimiter。