gpt4 book ai didi

c# - 如何在 C# 中将固定字节/char[100] 转换为托管 char[]?

转载 作者:行者123 更新时间:2023-11-30 22:49:23 24 4
gpt4 key购买 nike

在 C# 中将固定字节或 char[100] 转换为托管 char[] 的最佳方法是什么?我最终不得不使用指针算法,我想知道是否有更简单的方法——比如 memcpy 或其他方法?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;

namespace StructTest
{

[StructLayout(LayoutKind.Explicit)]
unsafe struct OuterType
{
private const int BUFFER_SIZE = 100;

[FieldOffset(0)]
private int transactionType;

[FieldOffset(0)]
private fixed byte writeBuffer[BUFFER_SIZE];

public int TransactionType
{
get { return transactionType; }
set { transactionType = value; }
}

public char[] WriteBuffer
{
set
{
char[] newBuffer = value;

fixed (byte* b = writeBuffer)
{
byte* bptr = b;
for (int i = 0; i < newBuffer.Length; i++)
{
*bptr++ = (byte) newBuffer[i];
}
}
}

get
{
char[] newBuffer = new char[BUFFER_SIZE];

fixed (byte* b = writeBuffer)
{
byte* bptr = b;
for (int i = 0; i < newBuffer.Length; i++)
{
newBuffer[i] = (char) *bptr++;
}
}

return newBuffer;
}
}
}

class Program
{
static void Main(string[] args)
{
OuterType t = new OuterType();
t.WriteBuffer = "hello there".ToCharArray();
System.Console.WriteLine(t.WriteBuffer);
}
}
}

最佳答案

您可以使用 Marshal.Copy为了那个原因。请注意,它也为 byte[] 重载,这可能是更合适的数据类型。

关于c# - 如何在 C# 中将固定字节/char[100] 转换为托管 char[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1185269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com