gpt4 book ai didi

c# - int[] 到字符串 c#

转载 作者:行者123 更新时间:2023-11-28 03:26:57 24 4
gpt4 key购买 nike

您好,我正在用 C# 开发客户端应用程序,而服务器是用 C++ 编写的

服务器使用:

inline void StrToInts(int *pInts, int Num, const char *pStr)
{
int Index = 0;
while(Num)
{
char aBuf[4] = {0,0,0,0};
for(int c = 0; c < 4 && pStr[Index]; c++, Index++)
aBuf[c] = pStr[Index];
*pInts = ((aBuf[0]+128)<<24)|((aBuf[1]+128)<<16)|((aBuf[2]+128)<<8)|(aBuf[3]+128);
pInts++;
Num--;
}

// null terminate
pInts[-1] &= 0xffffff00;
}

将字符串转换为 int[]

在我的 C# 客户端中我收到:

int[4] { -14240, -12938, -16988, -8832 }

如何将数组转换回字符串?我不想使用不安全的代码(例如指针)我的任何尝试都导致了不可读的字符串。

编辑:这是我的一个方法:

private string IntsToString(int[] ints)
{
StringBuilder s = new StringBuilder();
for (int i = 0; i < ints.Length; i++)
{
byte[] bytes = BitConverter.GetBytes(ints[i]);
for (int j = 0; j < bytes.Length; j++)
s.Append((char)(bytes[j] & 0x7F));
}
return s.ToString();
}

我知道我需要处理字节序,但由于服务器在我的本地计算机和服务器上运行,我认为这不是问题。
我的另一个尝试是使用具有显式布局和相同 FieldOffset 的结构用于整数和字符,但它也不起作用。

最佳答案

也许可以试试(使用 LINQ):

int[] fromServer = { -14240, -12938, -16988, -8832, };

string reconstructedStr = new string(fromServer.SelectMany(BitConverter.GetBytes).Select(b => (char)(b - 128)).ToArray());

未经测试,但可以从中着手。不知道128的减法是否正确。

关于c# - int[] 到字符串 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13664478/

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