public static long ComputeChunkedContentLength(long originalLength)
{
if (originalLength < 0)
throw new ArgumentOutOfRangeException("originalLength", "Expected 0 or greater value for originalLength.");
if (originalLength == 0)
return CalculateChunkHeaderLength(0);
var maxSizeChunks = originalLength / DefaultChunkSize;
var remainingBytes = originalLength % DefaultChunkSize;
return maxSizeChunks * CalculateChunkHeaderLength(DefaultChunkSize)
+ (remainingBytes > 0 ? CalculateChunkHeaderLength(remainingBytes) : 0)
+ CalculateChunkHeaderLength(0);
}