问题描述
我想使用文本文件作为 protobuff 中 $userId = User::where('mf_branch_id',$permitbranchId)->firstOrFail();
$permit_report = WorkPermit::where('user_id',$userId->id)->get();
函数的输入
存储在文本文件中的数据如下所示:
这是protobuff序列化数据
ParseFromString()
我希望数据采用这种格式作为反序列化数据的输入
0363D1015F5402656E0A140A0410021801120C120A303132333435363738390A0A0A0410071802120218020A120A04103A1819120A3A080A020001100220010A0A0A04103A1862120230000A140A0410081864120C420A082810591801204428448436B57E
但是当我将文本文件读取为二进制文件时,我正在获取这样的数据,因此无法反序列化 protobuff 中的数据
b'\x03h\xd1\x01dT\x02en\n\x19\n\x04\x10\x02\x18\x01\x12\x11\x12\x0f50D50U-843-01B1\n\n\n\x04\x10\x07\x18\x02\x12\x02\x18\x02\n\x12\n\x04\x10:\x18\x10\x12\n:\x08\n\x02\x00\x01\x10\x02 \x01\n\n\n\x04\x10;\x18(\x12\x020\x00\n\x14\n\x04\x10:\x18a\x12\x0cB\n\x08(\x10Y\x18\x01 D(Dj\xdec\xd6'
我正在使用 python 3 如何根据需要读取文本文件数据?
解决方法
试试下面的代码片段(在评论中解释):
xb = b'\xff\xfe0\x003\x006\x003\x00D\x001\x000\x001\x005\x00F\x005\x004\x000\x002\x006\x005\x006\x00E\x000\x00A\x001\x004\x000\x00A\x000\x004\x001\x000\x000\x002\x001\x008\x000\x001\x001\x002\x000\x00C\x001\x002\x000\x00A\x003\x000\x003\x001\x003\x002\x003\x003\x003\x004\x003\x005\x003\x006\x003\x007\x003\x008\x003\x009\x000\x00A\x000\x00A\x000\x00A\x000\x004\x001\x000\x000\x007\x001\x008\x000\x002\x001\x002\x000\x002\x001\x008\x000\x002\x000\x00A\x001\x002\x000\x00A\x000\x004\x001\x000\x003\x00A\x001\x008\x001\x009\x001\x002\x000\x00A\x003\x00A\x000\x008\x000\x00A\x000\x002\x000\x000\x000\x001\x001\x000\x000\x002\x002\x000\x000\x001\x000\x00A\x000\x00A\x000\x00A\x000\x004\x001\x000\x003\x00A\x001\x008\x006\x002\x001\x002\x000\x002\x003\x000\x000\x000\x000\x00A\x001\x004\x000\x00A\x000\x004\x001\x000\x000\x008\x001\x008\x006\x004\x001\x002\x000\x00C\x004\x002\x000\x00A\x000\x008\x002\x008\x001\x000\x005\x009\x001\x008\x000\x001\x002\x000\x004\x004\x002\x008\x004\x004\x008\x004\x003\x006\x00B\x005\x007\x00E\x00'
xs = xb.decode('utf-16') # \xff\xfe signature in xb => apply UTF-16
print('xs:',xs)
xx = bytes.fromhex(xs) # all hexadecimal ciphers in xs
print('xx:',xx)
结果:.\SO\65987622.py
xs: 0363D1015F5402656E0A140A0410021801120C120A303132333435363738390A0A0A0410071802120218020A120A04103A1819120A3A080A020001100220010A0A0A04103A1862120230000A140A0410081864120C420A082810591801204428448436B57E
xx: b'\x03c\xd1\x01_T\x02en\n\x14\n\x04\x10\x02\x18\x01\x12\x0c\x12\n0123456789\n\n\n\x04\x10\x07\x18\x02\x12\x02\x18\x02\n\x12\n\x04\x10:\x18\x19\x12\n:\x08\n\x02\x00\x01\x10\x02 \x01\n\n\n\x04\x10:\x18b\x12\x020\x00\n\x14\n\x04\x10\x08\x18d\x12\x0cB\n\x08(\x10Y\x18\x01 D(D\x846\xb5~'