5

我有一个字节数组。我需要将它分配给一个隐藏的文件并检索结果。如何实现这一点?

我试过了

var data =(byte[])hiddenField.value ;

但它给出了一个错误

无法将字符串转换为字节数组。

4

5 回答 5

6

您需要将其作为字符串存储在隐藏字段中,因此您可以执行以下操作:

hiddenField.Value = Convert.ToBase64String(data);

然后稍后将其转换回来:

byte[] data = Convert.FromBase64String(hiddenField.Value);

如果您也可以提供数据示例,那将更加彻底。

于 2013-03-27T08:40:31.710 回答
2

尝试这个:

要获取此字节:

byte[] bytes = System.Text.ASCIIEncoding.ASCII.GetBytes(hiddenField.Value);

再次获取字符串:

string s = System.Text.ASCIIEncoding.ASCII.GetString(bytes);
于 2013-03-27T08:40:36.680 回答
1

您可以将字节数组转换为字符串,然后将其存储在隐藏字段中。但是,请不要使用编码方法,Encoding.ASCII.GetString方法将字节数组转换为字符串。相反,您可以使用以下方法将字节数组转换为字符串:

Convert.ToBase64String(byteArray)

此外,您可以从隐藏字段中提取字符串值,然后使用以下方法再次将其转换回字节数组。

Convert.FromBase64String(string)

通过这种方式,您将能够在隐藏字段中存储和检索字节数组值。我这样做是为了在Cookie中存储字符串值。希望这也适用于 HiddenFields。

于 2017-08-11T08:54:17.480 回答
0

我正在使用这种方法:

1. 在 JavaScript 中

添加一个 javascript 函数将字节数组 (0..127) 转换为字符串:

function byteArrayToString(byteArray) {
    var str = "";
    for (var i = 0; i < byteArray.length; i++) {
        str += byteArray[i] + ',';
    }
    str = str.slice(0, -1);
    return str;
}
function getDataFromJavascript()
{
  var somebinarydata = [18,122,96];
  return byteArrayToString(somebinarydata);
}

通过调用 javascript 函数设置隐藏字段值:

$('#<%= HiddenField1.ClientID %>').val(getDataFromJavascript());

2. 在 C# 中

获取隐藏字段值,即字符串,将其创建一个字符串数组并将其转换为字节数组:

byte[] byteArray = HiddenField1.Value.Split(',').Select(byte.Parse).ToArray();
于 2013-11-12T15:20:43.090 回答
0

您实际上可以按原样存储它,但不能将其存储在一个字段中。您必须执行这样的循环:

 if (Model.YourByteArray != null)
 {
    foreach (var item in Model.YourByteArray)
    {
       <input type="hidden" name="YourByteArray" value="@item">
    }
 }

表单会将其发布到字节数组参数中。

于 2020-05-09T03:40:37.357 回答