Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 9409f78

Browse files
committed
Add ToBase64() to MemoryProvider
1 parent e341f85 commit 9409f78

File tree

4 files changed

+20
-0
lines changed

4 files changed

+20
-0
lines changed

src/ServiceStack.Memory/NetCoreMemory.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ public override byte[] ParseBase64(ReadOnlySpan<char> value)
9090
}
9191
}
9292

93+
public override string ToBase64(ReadOnlyMemory<byte> value)
94+
{
95+
return Convert.ToBase64String(value.Span);
96+
}
97+
9398
public override Task WriteAsync(Stream stream, ReadOnlySpan<char> value, CancellationToken token=default)
9499
{
95100
using (var writer = new BinaryWriter(stream, Encoding.UTF8, leaveOpen:true))

src/ServiceStack.Text/DefaultMemory.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Globalization;
33
using System.IO;
44
using System.Runtime.CompilerServices;
5+
using System.Runtime.InteropServices;
56
using System.Text;
67
using System.Threading;
78
using System.Threading.Tasks;
@@ -511,6 +512,13 @@ public override byte[] ParseBase64(ReadOnlySpan<char> value)
511512
return Convert.FromBase64String(value.ToString());
512513
}
513514

515+
public override string ToBase64(ReadOnlyMemory<byte> value)
516+
{
517+
return MemoryMarshal.TryGetArray(value, out var segment)
518+
? Convert.ToBase64String(segment.Array, 0, segment.Count)
519+
: Convert.ToBase64String(value.ToArray());
520+
}
521+
514522
public override StringBuilder Append(StringBuilder sb, ReadOnlySpan<char> value)
515523
{
516524
return sb.Append(value.ToArray());

src/ServiceStack.Text/MemoryProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ public abstract class MemoryProvider
4848

4949
public abstract byte[] ParseBase64(ReadOnlySpan<char> value);
5050

51+
public abstract string ToBase64(ReadOnlyMemory<byte> value);
52+
5153
public abstract Task WriteAsync(Stream stream, ReadOnlySpan<char> value, CancellationToken token = default);
5254
public abstract Task WriteAsync(Stream stream, ReadOnlyMemory<byte> value, CancellationToken token = default);
5355

src/ServiceStack.Text/NetCoreMemory.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ public override byte[] ParseBase64(ReadOnlySpan<char> value)
9090
}
9191
}
9292

93+
public override string ToBase64(ReadOnlyMemory<byte> value)
94+
{
95+
return Convert.ToBase64String(value.Span);
96+
}
97+
9398
public override Task WriteAsync(Stream stream, ReadOnlySpan<char> value, CancellationToken token=default)
9499
{
95100
using (var writer = new BinaryWriter(stream, Encoding.UTF8, leaveOpen:true))

0 commit comments

Comments
 (0)