c# - 使用 Encoding.GetBytes 或转换为字节的区别

标签 c# encoding byte

<分区>

我想知道使用 Encoding.UTF8.GetBytes 将字符转换为字节或在字符前手动使用 (byte) 并将它们转换为字节之间是否有任何区别?

例如,看下面的代码:

public static byte[] ConvertStringToByteArray(string str)
{
    int i, n;
    n = str.Length;
    byte[] x = new byte[n];
    for (i = 0; i < n; i++)
    {
        x[i] = (byte)str[i];
    }
    return x;
}

var arrBytes = ConvertStringToByteArray("Hello world");

var arrBytes = Encoding.UTF8.GetBytes("Hello world");

最佳答案

我喜欢这个问题,所以我在从文本文件中读取的希伯来语 ANSI 文本上执行了您的代码。

文本是“שועל”

string text = System.IO.File.ReadAllText(@"d:\test.txt");
var arrBytes = ConvertStringToByteArray(text);
var arrBytes1 = Encoding.UTF8.GetBytes(text);

结果是

This is what I got in the watch

如您所见,当任何字符的代码点超过 byte 的 0-255 范围时,就会出现差异。

关于c# - 使用 Encoding.GetBytes 或转换为字节的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17694054/

相关文章:

c# - 如何将多个 bool 值声明为 false

C# 在标签周围绘制圆圈

javascript - if block 中具有不同数值的此数字函数的含义

c# - WebBrowser 控件 c# : finding particular link and "clicking" it programmatically?

c - MultiByteToWideChar 作为 mbrtowc

encoding - Java : How to change inproper shown characters in . 属性文件

python - 执行 os.walk 时出现 UnicodeDecodeError

swift - 如何快速将浮点值转换为字节数组?

python-3.x - 为什么我无法使用逻辑运算符和索引获得预期输出?

C# DWORD 和 QWORD - 有符号和无符号的疯狂