diff --git a/src/blob.c b/src/blob.c
index c260a43..58acfc8 100644
--- a/src/blob.c
+++ b/src/blob.c
@@ -167,4 +167,71 @@
     return OK;
 }
 
+/*
+ * Convert a blob to a readable form: "[0x11,0x34]"
+ */
+    char_u *
+blob2string(blob_T *blob, char_u **tofree, char_u *numbuf)
+{
+    int		i;
+    garray_T    ga;
+
+    if (blob == NULL)
+    {
+	*tofree = NULL;
+	return (char_u *)"[]";
+    }
+
+    // Store bytes in the growarray.
+    ga_init2(&ga, 1, 4000);
+    ga_append(&ga, '[');
+    for (i = 0; i < blob_len(blob); i++)
+    {
+	if (i > 0)
+	    ga_concat(&ga, (char_u *)",");
+	vim_snprintf((char *)numbuf, NUMBUFLEN, "0x%02X", (int)blob_get(blob, i));
+	ga_concat(&ga, numbuf);
+    }
+    ga_append(&ga, ']');
+    *tofree = ga.ga_data;
+    return *tofree;
+}
+
+/*
+ * Convert a string variable, in the format of blob2string(), to a blob.
+ * Return NULL when conversion failed.
+ */
+    blob_T *
+string2blob(char_u *str)
+{
+    blob_T  *blob = blob_alloc();
+    char_u  *s = str;
+
+    if (*s != '[')
+	goto failed;
+    s = skipwhite(s + 1);
+    while (*s != ']')
+    {
+	if (s[0] != '0' || s[1] != 'x'
+				 || !vim_isxdigit(s[2]) || !vim_isxdigit(s[3]))
+	    goto failed;
+	ga_append(&blob->bv_ga, (hex2nr(s[2]) << 4) + hex2nr(s[3]));
+	s += 4;
+	if (*s == ',')
+	    s = skipwhite(s + 1);
+	else if (*s != ']')
+	    goto failed;
+    }
+    s = skipwhite(s + 1);
+    if (*s != NUL)
+	goto failed;  // text after final ']'
+
+    ++blob->bv_refcount;
+    return blob;
+
+failed:
+    blob_free(blob);
+    return NULL;
+}
+
 #endif /* defined(FEAT_EVAL) */
