code: def from_header(self, binary):
          
          # If no binary provided, generate a new SpanContext
          if binary is None:
              return span_context_module.SpanContext(from_header=False)
  
          # If cannot parse, return a new SpanContext and ignore the context
          # from binary.
          try:
              data = Header._make(struct.unpack(BINARY_FORMAT, binary))
          except struct.error:
              logging.warning(
                  'Cannot parse the incoming binary data {}, '
                  'wrong format. Total bytes length should be {}.'.format(
                      binary, FORMAT_LENGTH
                  )
              )
              return span_context_module.SpanContext(from_header=False)
  
          # data.trace_id is in bytes with length 16, hexlify it to hex bytes
          # with length 32, then decode it to hex string using utf-8.
          trace_id = str(binascii.hexlify(data.trace_id).decode(UTF8))
          span_id = str(binascii.hexlify(data.span_id).decode(UTF8))
          trace_options = TraceOptions(data.trace_option)
  
          span_context = span_context_module.SpanContext(
                  trace_id=trace_id,
                  span_id=span_id,
                  trace_options=trace_options,
                  from_header=True)
  
          return span_context
docs: Generate a SpanContext object using the trace context header.
          The value of enabled parsed from header is int. Need to convert to
          bool.
  
          :type binary: bytes
          :param binary: Trace context header which was extracted from the
                         request headers.
  
          :rtype: :class:`~opencensus.trace.span_context.SpanContext`
          :returns: SpanContext generated from the trace context header.