繁体   English   中英

从C#中的十六进制字符串解析ASCII(?)的最佳方法

[英]Best way to parse ASCII(?) from a hex string in C#

我在应用程序中获得的字符串包括ASCII(?)字符,如!,dp,\\ b,(,s @。

这些假定是等效的。

数据库中的值

\x01\x01\x03!\xea\x01\x00\x00dP\x00\x00\x1f\x8b\b\x00\x00\x00\x00\x00\x04\x00\xe3\xe6\x10\x11\x98\xc3(\xc1\xa2\xc0\xa8\xc0\xa0 \x02\xc4\x0c\x1a\x8c\x1a\x0c\x1as@\x04\x18\xf2\b\x1de\xe6\xe6\xe2\xe2b604\x14`\x94\x98\xc3\ba\x9b\"\xb1M\x80\xec\xc9\x10\xb6\x81\x05\x90=\t\xca6Ab[\x02\xd9\x13\xa1\xea\x8d\x80\xec.\xa8\xb8)\x12\xdb\x0c\xc8n\x81\xaa1\x06\xb2\x1b\x19\xb98A\xe2 \xf5\xb5\x10\xa6\x01\x90Y\rf\x1a\x9a#\x98\x16\b&\xc8\x8cJ\x88Z\x90\x11\xa5\x10Q\x90\xb6\x12\x88(H[1\x84\t\xf2O\xb6\xc0&v\tF\x1e\xa1\a\x8c\xc3\xd9\x8f\x8f\x8d%\x18\x01\xa1\x98\x8d\x97\xea\x01\x00\x00

我在我的应用中获得的价值包括我不想要的特征-

01010321ea010000645000001f8b0800000000000400e3e6101198c328c1a2c0a8c0a02002c40c1a8c1a0c1a73400418f2081d65e6e6e2e26236303414609498c308619b22b14d80ecc910b68105903d09ca3641625b02d913a1ea8d80ec2ea8b82912db0cc86e81aa3106b21b19b93841e220f5b510a60190590d661a9a2398160826c88c4a885a9011a5105190b6128828485b318409f24fb6c0267609461ea1078cc3d98f8f8d251801a1988d97ea0100000a\n\n"3a1ea8d80ec2ea8b82912db0cc86e81aa3106b21b19b93841e220f5b510a60190590d661a9a2398160826c88c4a885a9011a5105190b6128828485b318409f24fb6c0267609461ea1078cc3d98f8f8d251801a1988d97ea0100000a\n\n"3a1ea8d80ec2ea8b82912db0cc86e81aa3106b21b19b93841e220f5b510a60190590d661a9a2398160826c88c4a885a9011a5105190b6128828485b318409f24fb6c0267609461ea1078cc3d98f8f8d251801a1988d97ea0100000a\n\n

您会看到\\x0101然后\\x0303然后! 21 我想取出第二个字符串中的所有非十六进制值。

  1. 子们是什么样的人! 和dP。 它们是ASCII吗?
  2. 我可以删除像新行这样的字符,例如hexString = hexString.Replace("\\n", ""); 但是我不确定这是否是所有人的最佳方法。 3.比较两个字符串,我看到( = 28s@ = 7340是否7340于此的转换表?

我的猜测是给出以下引号,即数据库将非ASCII(Unicode?)字符显示为十六进制(例如\\x03 ),并且实际字符串对于每个十六进制格式的显示都包含一个字符,在这种情况下,没有区别出来-字符d也是十六进制值\\x64 ,只是数据库选择将可见字符输出为它们的普通字母-与\\t相同的东西可以输出为\\x09但它们选择使用(C )标准控制字符的缩写。

发现了这一点:

当它显示在屏幕上时,redis-cli使用\\ xHH编码格式对不可打印的字符进行转义,其中HH是十六进制表示法。

换一种说法,

cli只是使用3种不同的方法来显示数据库字段中的值:

  1. 字符是可打印的,输出字符(例如d,P,!,“)。
  2. 该字符不可打印,但是具有C语言标准的转义序列,输出转义序列(例如\\ b,\\ t,\\ n)。
  3. 该字符不可打印并且没有转义序列,输出十六进制字符值(例如\\ x03,\\ x01,\\ x00)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM