http 服务端,处理 post 请求的数据,数据经过自定义加密表的 base64 加密,获取客户端 post 过来的经过加密的数据后,服务端解密,该数据中有客户端的 [软件名称] 、 [软件版本] 、 [时间] 、 [ CPU ID ] 等等,服务端需要提取这些数据并进行一些计算,后返回一个数据给客户端。现在问题是 c# 中如何提取这些数据,如何判断序列中字符的结尾?因为初学 c#,看了一些 MemoryStream 和 StreamReader 之类的文章,还是一头雾水,求指教。
这是改的朋友写的一个 python 版本的程序,python 中是自定义了一个类似处理流的类,按顺序读取 python 中截取字符串是以判断当前字符是否为 “\x00 ”,目前是仿照 python 版本写了个类似的类,但我想 c# 是否有比较高级的处理方法。python 是用 Django 做服务端,现在不想用所以才改成 c# 的。
\x06\x00\x00\x00AABBCC Admin\x003.0\x00Jun 28 2017 at 16:26:47\x00\x001033\x0074689434\x006.2.9200 9\x002052.86.45\x00\x01\x00\x00\x00\x00\x80\x1a\x00\x14\xd2\x01\x00`\x97\xf2\x1b\x00\x00\x0020150429\x00FASPEED K5-120G\x00ZSYHOP518010400F30\xcd\x00\x00\x01\x00\x00\x00\x00
我现在需要按顺序提取字符串,如第一个值是:6,接着的 3 位为 0,就索引 +3,再取字符串,到 “\x00 ”,结束, “ AABBCC Admin ” 就是软件的名字,然后继续,问题是这个字符串的长度是没法预知的,像这种情况应该如何处理?
python 获取字符串的函数为:
def getString(self):
strBytes = []
for i in range(self.currentIndex, self.limit):
if self.inputBytes[i] != '\x00':
strBytes.append(self.inputBytes[i])
else:
self.currentIndex = i + 1
break
return str(bytearray(strBytes))
处贴,大神轻点儿、、
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.