对于大于>
的符号,我需要获得完整的字节,我理解为\u003E
。现在C#只给我3E
。反正有没有获得所有角色?即\u003E
。
我使用以下代码行。
Encoding.UTF8.GetBytes(">");
在文本文件中,我有以下
\u003c
我需要在字节级别搜索
谢谢!
答案 0 :(得分:2)
您得到的答案是正确的 - 3E
是U+003E
的十六进制表示。
如果你想要unicode字节(即2字节数组),那么只需使用这种编码:
Encoding.Unicode.GetBytes(">");
答案 1 :(得分:2)
在UTF-8中,(ASCII范围)char >
被编码为1个字节。
如果你想要字符串"003E"
,你可以使用:
Encoding.Utf8.GetBytes(">")[0].ToString("X4");
并且可能在前面添加“\ u”。
如果你想要一个包含{0x00,0x3E}的2个字节的数组,那么使用
Encoding.Unicode.GetBytes(">");
答案 2 :(得分:2)
组成>
的字节不同于编码到编码 - 在UTF8中它实际上只是0x3e
,在Unicode中它是0x00 0x3e
,所以你需要
Encoding.XXXX.GetBytes(">");
XXXX是您选择的编码,例如UTF8
或Unicode
答案 3 :(得分:2)
几年前我在http://www.hackcraft.net/xmlUnicode/#sect4写了一篇相当冗长的文章,更详细地说了以下内容,但是:
>
是一个角色。这是一个纯粹的概念性项目,我们理解为根据不同的语言和文本背景,有一个或多个含义,用法和写作方式。这是一个抽象概念,而不是我们可以在计算机中实际使用的任何东西。
U+003E
(在C#中表示为\u003E
)是一个代码点。这是一种为角色分配数字的方式,但它仍然是一个相当抽象的东西。数字0x3E
(62)仍然是一个抽象的概念,而不是我们可以在计算机中使用的东西。
00111110
,0000000000111110
,0011111000000000
,00000000000000000000000000111110
和00111110000000000000000000000000
都是通常用于表示实际1和0中代码点的不同方式计算机可以通过电荷脉冲来表示。
在两者之间,作为程序员,我们倾向于将这三者视为0x3E
,0x003E
或0x000000003E
,它们是映射到我们实际使用的数据类型的数字。 0000000000111110
和0011111000000000
之间的差异就是字节序之一,而且大多数情况下我们都没有想到它已经(如果必要)认为“必须确保字节顺序正确” ,因为“如果有必要”倾向于发生在人们根本没有想到字符的水平上。
实际上,作为程序员,我们倾向于将其视为我们开始的>
。抽象很棒。
使用UTF-8的代码使用了将字符转换为字节的不同方法之一,即将U + 003E转换为0x3E的方法。还有其他,但UTF-8是大多数交换最有用的。因此,它是“'>'的完整字节”的正确答案之一。字节0x00后跟0x3E,字节0x3E后跟0x00将是另外两个正确答案,两种形式的UTF-16具有不同的字节顺序。字节序列0x00,0x00,0x00,0x3E和0x3E,0x00,0x00,0x00都是正确的UTF-32。
如果您有理由想要特定的一个,请使用适当的编码。如果有疑问,请使用UTF-8。