MCPcopy Create free account
hub / github.com/e2wugui/zeze / write_uint

Method write_uint

python/zeze/buffer.py:288–322  ·  view source on GitHub ↗
(self, v)

Source from the content-addressed store, hash-verified

286 # @formatter:on
287
288 def write_uint(self, v):
289 # v看成无符号数时,与write_ulong的结果一致,即相当于write_ulong(v & 0xffff_ffff)
290 v &= 0xffff_ffff
291 if v < 0x80: # 0xxx xxxx
292 self.ensure_write(1)
293 wi = self.wi
294 self.wi = wi + 1
295 self.buf[wi] = v
296 elif v < 0x4000: # 10xx xxxx +1B
297 self.ensure_write(2)
298 wi = self.wi
299 self.wi = wi + 2
300 buf = self.buf
301 buf[wi] = (v >> 8) + 0x80
302 buf[wi + 1] = v & 0xff
303 elif v < 0x20_0000: # 110x xxxx +2B
304 self.ensure_write(3)
305 wi = self.wi
306 self.wi = wi + 3
307 buf = self.buf
308 buf[wi] = (v >> 16) + 0xc0
309 buf[wi + 1] = (v >> 8) & 0xff
310 buf[wi + 2] = v & 0xff
311 elif v < 0x1000_0000: # 1110 xxxx +3B
312 self.ensure_write(4)
313 wi = self.wi
314 self.wi = wi + 4
315 struct.pack_into(">I", self.buf, wi, v + 0xe000_0000)
316 else: # 1111 0000 +4B
317 self.ensure_write(5)
318 wi = self.wi
319 self.wi = wi + 5
320 buf = self.buf
321 buf[wi] = 0xf0
322 struct.pack_into(">I", self.buf, wi + 1, v)
323
324 @staticmethod
325 def truncate_int(x):

Callers 10

write_stringMethod · 0.95
write_bytesMethod · 0.95
encode_collectionMethod · 0.95
write_tagMethod · 0.95
write_list_typeMethod · 0.95
write_map_typeMethod · 0.95
read_unknown_fieldMethod · 0.95
test_uintMethod · 0.95
check_uintMethod · 0.95
check_skip_uintMethod · 0.95

Calls 1

ensure_writeMethod · 0.95

Tested by 3

test_uintMethod · 0.76
check_uintMethod · 0.76
check_skip_uintMethod · 0.76