@@ -800,7 +800,7 @@ def unpackb(value):
800
800
"got {3:d}" .format (
801
801
type , precision , expected_length , len (value )))
802
802
803
- date = time = tz_offset = nanosecond = None
803
+ date = time = tz_offset = nanosecond = padding = None
804
804
805
805
if type == 'D' :
806
806
# 100DDDDD DDDDDDDD DDDDDDDD
@@ -838,10 +838,12 @@ def unpackb(value):
838
838
# 01PPDDDD DDDDDDDD DDDDDDDD DTTTTTTT
839
839
# TTTTTTTT TTSSSSSS SSSS0000
840
840
nanosecond = (n >> 4 & MILLISECOND_MASK ) * 1000000
841
+ padding = n & 0b1111
841
842
elif precision == 0b01 :
842
843
# 01PPDDDD DDDDDDDD DDDDDDDD DTTTTTTT
843
844
# TTTTTTTT TTSSSSSS SSSSSSSS SSSSSS00
844
845
nanosecond = (n >> 2 & MICROSECOND_MASK ) * 1000
846
+ padding = n & 0b11
845
847
elif precision == 0b10 :
846
848
# 01PPDDDD DDDDDDDD DDDDDDDD DTTTTTTT
847
849
# TTTTTTTT TTSSSSSS SSSSSSSS SSSSSSSS
@@ -850,7 +852,7 @@ def unpackb(value):
850
852
elif precision == 0b11 :
851
853
# 01PPDDDD DDDDDDDD DDDDDDDD DTTTTTTT
852
854
# TTTTTTTT TT000000
853
- pass
855
+ padding = n & 0b111111
854
856
855
857
elif type == 'DTSZ' :
856
858
# 111PPDDD DDDDDDDD DDDDDDDD DDTTTTTT
@@ -866,12 +868,14 @@ def unpackb(value):
866
868
# TTTTTTTT TTTSSSSS SSSSSZZZ ZZZZ0000
867
869
nanosecond = (n >> 11 & MILLISECOND_MASK ) * 1000000
868
870
tz_offset = n >> 4 & Z_MASK
871
+ padding = n & 0b1111
869
872
elif precision == 0b01 :
870
873
# 111PPDDD DDDDDDDD DDDDDDDD DDTTTTTT
871
874
# TTTTTTTT TTTSSSSS SSSSSSSS SSSSSSSZ
872
875
# ZZZZZZ00
873
876
nanosecond = (n >> 9 & MICROSECOND_MASK ) * 1000
874
877
tz_offset = n >> 2 & Z_MASK
878
+ padding = n & 0b11
875
879
elif precision == 0b10 :
876
880
# 111PPDDD DDDDDDDD DDDDDDDD DDTTTTTT
877
881
# TTTTTTTT TTTSSSSS SSSSSSSS SSSSSSSS
@@ -882,6 +886,10 @@ def unpackb(value):
882
886
# 111PPDDD DDDDDDDD DDDDDDDD DDTTTTTT
883
887
# TTTTTTTT TTTZZZZZ ZZ000000
884
888
tz_offset = n >> 6 & Z_MASK
889
+ padding = n & 0b111111
890
+
891
+ if padding :
892
+ raise ValueError ("padding bits must be zero" )
885
893
886
894
#
887
895
# Split D and T components
0 commit comments