本文整理汇总了C#中Span.ReadUInt32方法的典型用法代码示例。如果您正苦于以下问题:C# Span.ReadUInt32方法的具体用法?C# Span.ReadUInt32怎么用?C# Span.ReadUInt32使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Span
的用法示例。
在下文中一共展示了Span.ReadUInt32方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReadUInt32
public void ReadUInt32(byte[] bytes, uint expected)
{
var span = new Span<byte>(bytes);
uint value = span.ReadUInt32();
Assert.Equal(expected, value);
var roSpan = new ReadOnlySpan<byte>(bytes);
value = span.ReadUInt32();
Assert.Equal(expected, value);
}
示例2: TryDecodeCodePoint
public static bool TryDecodeCodePoint(Span<byte> buffer, out UnicodeCodePoint codePoint, out int encodedBytes)
{
if (buffer.Length < 2)
{
codePoint = default(UnicodeCodePoint);
encodedBytes = default(int);
// buffer too small
return false;
}
uint codePointValue = buffer.ReadUInt16();
encodedBytes = 2;
if (UnicodeCodePoint.IsSurrogate((UnicodeCodePoint)codePointValue))
{
// TODO: Check if compiler optimized it so codePointValue low range is checked only once
if (!UnicodeCodePoint.IsHighSurrogate((UnicodeCodePoint)codePointValue) || buffer.Length < 4)
{
codePoint = default(UnicodeCodePoint);
encodedBytes = default(int);
// invalid high surrogate or buffer too small
return false;
}
unchecked
{
codePointValue -= UnicodeConstants.Utf16HighSurrogateFirstCodePoint;
encodedBytes += 2;
}
// high surrogate contains 10 first bits of the code point
codePointValue <<= 10;
uint lowSurrogate = buffer.ReadUInt32() >> 16;
if (!UnicodeCodePoint.IsLowSurrogate((UnicodeCodePoint)lowSurrogate))
{
codePoint = default(UnicodeCodePoint);
encodedBytes = default(int);
// invalid low surrogate character
return false;
}
unchecked
{
lowSurrogate -= UnicodeConstants.Utf16LowSurrogateFirstCodePoint;
}
codePointValue |= lowSurrogate;
}
codePoint = (UnicodeCodePoint)codePointValue;
return true;
}
示例3: WriteUInt32
public void WriteUInt32(uint value)
{
var span = new Span<byte>(new byte[4]);
span.WriteUInt32(value);
uint read = span.ReadUInt32();
Assert.Equal(value,read);
}