Convert IDL blob to string

I staked neurons on SNS using quill:

quill sns stake-neuron --memo 2 --amount 20

Which gave me this output:

(
  record {
    command = opt variant {
      ClaimOrRefresh = record {
        refreshed_neuron_id = opt record {
          id = blob "(\18\8d #\f0\87\c1Y\ce\87\b9\97H\07\caX\ecR\0a{\02\a0\0b\e4\06cS[U\ee\d7";
        };
      }
    };
  },
)

To get the neuron ID I ran:
quill sns neuron-id --memo 2 which gave me this output:
28188d2023f087c159ce87b9974807ca58ec520a7b02a00be40663535b55eed7

How is the conversion done? Is this from a network call? How can I convert the blob output to the string ID directly?