@@ -35,20 +35,14 @@ public void Advance(int count)
3535
3636 var span = _activeMemory . Span ;
3737
38- var headerLength = WriteHex ( ( uint ) count , span ) ;
38+ WriteHex ( ( uint ) count , span ) ;
3939
40- if ( headerLength != MaxHeaderSize )
41- {
42- span . Slice ( MaxHeaderSize , count )
43- . CopyTo ( span . Slice ( headerLength ) ) ;
44- }
45-
46- var trailerOffset = headerLength + count ;
40+ var trailerOffset = MaxHeaderSize + count ;
4741
4842 span [ trailerOffset ] = ( byte ) '\r ' ;
4943 span [ trailerOffset + 1 ] = ( byte ) '\n ' ;
5044
51- context . Writer . Advance ( headerLength + count + TrailerSize ) ;
45+ context . Writer . Advance ( MaxHeaderSize + count + TrailerSize ) ;
5246
5347 _activeMemory = default ;
5448 }
@@ -62,30 +56,19 @@ public void Finish()
6256 context . Writer . Advance ( 5 ) ;
6357 }
6458
65- private static int WriteHex ( uint value , Span < byte > dest )
59+ private static void WriteHex ( uint value , Span < byte > dest )
6660 {
67- const int end = 8 ;
68-
69- var pos = end ;
70-
71- do
61+ for ( var pos = 7 ; pos >= 0 ; pos -- )
7262 {
7363 var digit = value & 0xF ;
7464
75- dest [ -- pos ] = digit < 10 ? ( byte ) ( '0' + digit ) : ( byte ) ( 'A' + digit - 10 ) ;
65+ dest [ pos ] = digit < 10 ? ( byte ) ( '0' + digit ) : ( byte ) ( 'A' + digit - 10 ) ;
7666
7767 value >>= 4 ;
7868 }
79- while ( value != 0 ) ;
80-
81- var length = end - pos ;
82-
83- dest . Slice ( pos , length ) . CopyTo ( dest ) ;
84-
85- dest [ length ] = ( byte ) '\r ' ;
86- dest [ length + 1 ] = ( byte ) '\n ' ;
8769
88- return length + 2 ;
70+ dest [ 8 ] = ( byte ) '\r ' ;
71+ dest [ 9 ] = ( byte ) '\n ' ;
8972 }
9073
9174}
0 commit comments