c#保存16字节Byte数组到文件,无乱码的方法
时间: 2024-09-06 09:06:23 浏览: 27
在 C# 中,如果你有一个 16 字节的 Byte 数组想要保存到文件,通常可以直接写入,因为 Byte 类型就是二进制数据。这里是一个简单的示例:
```csharp
using System.IO;
byte[] byteArray = ...; // 你的16字节Byte数组
// 创建文件流并指定二进制模式
using (FileStream fileStream = new FileStream("yourfile.bin", FileMode.Create, FileAccess.Write))
{
// 写入 Byte 数组
fileStream.Write(byteArray, 0, byteArray.Length);
}
```
这个例子中,`FileMode.Create` 表示如果文件已存在则会被覆盖,如果没有则创建新文件;`FileAccess.Write` 指定只写权限。
为了确保无乱码,记住文件操作都是基于字节的,不需要考虑文本编码。除非你后续需要读取字符串,并且确实处理的是文本文件,那时才可能涉及到字符编码的问题,如 UTF8、ASCII 等。
相关问题
c# 字符串转byte数组转
在C#中,可以使用Encoding类来进行字符串和字节数组之间的转换。具体的方法如下:
1. 将字符串转换为字节数组:
```csharp
string str = "Hello, World!";
byte[] byteArray = Encoding.UTF8.GetBytes(str);
```
2. 将字节数组转换为字符串:
```csharp
byte[] byteArray = { 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33 };
string str = Encoding.UTF8.GetString(byteArray);
```
需要注意的是,在进行字符串和字节数组的转换时,要确保使用相同的编码方式,以免出现乱码或数据丢失的情况。
C# byte[] 转string
在C#中,将byte数组转换为字符串(String)通常通过字节序列转换成ASCII字符或者Base64编码来实现。以下是两种常见的方式:
1. ASCII转换:
```csharp
byte[] byteArray = ...; // 假设这是你要转换的字节数组
StringBuilder asciiBuilder = new StringBuilder();
foreach (byte b in byteArray)
{
asciiBuilder.Append((char)b);
}
string asciiString = asciiBuilder.ToString();
```
2. Base64编码:
```csharp
using System.Text;
...
byte[] byteArray = ...;
string base64String = Convert.ToBase64String(byteArray);
```
如果byte数组包含的是非ASCII数据,直接按ASCII转换可能会有乱码,这时应使用Base64编码,它能保证所有二进制数据都能准确无误地转成字符串。