byte[]
UTF-8 エンコーディングでエンコードされた出力の長さを制限する必要があります。例えば。byte[]
長さは以下でなければなりません1000
最初に次のコードを書きました
int maxValue = 1000;
if (text.Length > maxValue)
text = text.Substring(0, maxValue);
var textInBytes = Encoding.UTF8.GetBytes(text);
1文字あたり1バイトであるため、文字列がASCII文字のみを使用している場合はうまく機能します。ただし、文字数がそれを超えると、1 文字あたり 2、3、または 6 バイトになることさえあります。これは、上記のコードの問題です。その問題を解決するために、私はこれを書きました。
List<byte> textInBytesList = new List<byte>();
char[] textInChars = text.ToCharArray();
for (int a = 0; a < textInChars.Length; a++)
{
byte[] valueInBytes = Encoding.UTF8.GetBytes(textInChars, a, 1);
if ((textInBytesList.Count + valueInBytes.Length) > maxValue)
break;
textInBytesList.AddRange(valueInBytes);
}
私はコードをテストしていませんが、私が望むように動作すると確信しています。しかし、私はそれが行われた方法が好きではありません.これを行うより良い方法はありますか? 私が行方不明の何か?または知らない?
ありがとうございました。