我用两个字符串创建了一个字节数组.如何将字节数组转换为字符串?
var binWriter = new BinaryWriter(new MemoryStream());
binWriter.Write("value1");
binWriter.Write("value2");
binWriter.Seek(0, SeekOrigin.Begin);
byte[] result = reader.ReadBytes((int)binWriter.BaseStream.Length);
Run Code Online (Sandbox Code Playgroud)
我想转换result为字符串.我可以用它做BinaryReader.但我不能使用BinaryReader(它不支持).
我对C#很陌生.我正在将VB中的内容转换为C#.遇到此语句的语法问题:
if ((searchResult.Properties["user"].Count > 0))
{
profile.User = System.Text.Encoding.UTF8.GetString(searchResult.Properties["user"][0]);
}
Run Code Online (Sandbox Code Playgroud)
然后我看到以下错误:
参数1:无法从'object'转换为'byte []'
'System.Text.Encoding.GetString(byte [])'的最佳重载方法匹配有一些无效的参数
我试图根据这篇文章修复代码,但仍然没有成功
string User = Encoding.UTF8.GetString("user", 0);
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我不关心编码和东西,只要我找回完全相同的字节数组.
总结一下:如何将字节数组转换为字符串,然后将该字符串转换回我开始使用的相同字节数组?
我有一个字符串,我需要转换为.NET中的等效字节数组.
这应该很容易,但我有脑痉挛.
本质上,string使用UTF-16字符编码形式
但是当与StreamWriter保存时:
此构造函数创建一个StreamWriter,其UTF-8编码没有字节顺序标记(BOM),
我见过这个样本(删除了断开的链接):

utf8对于某些字符串看起来更小,而utf-16在其他字符串中则更小.
utf16在utf8保存文件时使用字符串的默认编码?谢谢.
ps我已经读过这篇着名的文章了
好的,我在这里和这里都遇到过一些文章,但他们并没有做我需要做的事情,而且我遇到了一些麻烦.
我收到一段加密的数据作为内存流.我需要以某种方式将内存流写入文件(我编写模型的方式,因为字符串最好),然后从文件中检索字符串并将其作为内存流发送到要解密的服务.我只是使用流读取器将内存流存储为字符串,并使用编码将字符串读入内存.
问题是我收到一个错误,说我的加密数据已损坏.我认为这意味着我以某种方式改变了字节.
以下是将memorystream读入字符串的代码:
using (StreamReader reader = new StreamReader(dataKeyResponse.CiphertextBlob))
{
encryptedDataKey = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)
以下是将从文件中检索到的字符串读取到内存流中的代码:
MemoryStream mStream = new MemoryStream(ASCIIEncoding.Default.GetBytes(encryptedKey));
Run Code Online (Sandbox Code Playgroud)
我认为这样做的步骤是ASCIIEncoding,但后来我实现了上面的解决方法,将字节数组转换为内存流,并得到了同样的错误.
byte[] bytes = new byte[encryptedKey.Length*sizeof (char)];
System.Buffer.BlockCopy(encryptedKey.ToCharArray(), 0, bytes, 0, bytes.Length);
string decryptedKey;
using (MemoryStream mStream = new MemoryStream())
{
mStream.Write(bytes, 0, bytes.Length);
var decryptRequest = new DecryptRequest()
{CiphertextBlob = mStream};
var decryptResponse = client.Decrypt(decryptRequest);
using (StreamReader reader = new StreamReader(decryptResponse.Plaintext))
{
decryptedKey = reader.ReadToEnd();
}
}
Run Code Online (Sandbox Code Playgroud)
我假设(1)有些东西以某种方式改变数据而不是其他一些错误; (2)它在流 - >字符串或字符串 - …
我有一个UTF-8字符串,我需要得到UTF-16编码的字节数组,那么如何将我的字符串转换为UTF-16字节数组?
更新:
我的意思是我们有Encoding.Unicode.GetBytes()甚Encoding.UTF8.GetBytes()至函数来获取字符串的字节数组,那怎么样UTF-16?我们没有,Encoding.UTF16.GetBytes()所以如何获得字节数组?
我怎样才能在ServiceStack.OrmLite代码中首先使用nText数据类型?
public class Email
{
[AutoIncrement]
public long ID { get; set; }
public DateTime Date { get; set; }
public string From { get; set; }
public string Subject { get; set; }
nText =>
public string Body { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我使用字符串数据类型,ormlite在数据库中生成nVarchar(8000)
我需要超过8000个字符的数据
c# ×8
string ×6
.net ×3
encoding ×3
arrays ×2
byte ×2
bytearray ×2
base64 ×1
binaryreader ×1
code-first ×1
encode ×1
encryption ×1
servicestack ×1
size ×1
sql-server ×1
utf-16 ×1
utf-8 ×1