如何在C#中将字符串数组转换为字节数组

时间:2018-07-09 02:46:58

标签: c#

所以我有一个字符串

string enc = ""hx0.+dhx0-pdhx0pzdhx0xx";

已加密,解密后具有十六进制值时,起始值为 “ 0xfc,0xe8,0x82,0x00”

然后这个

string decrypted = encryptDecrypt(enc);

然后这个     然后我在每个逗号后用split命令将其分割     string []嗨=已解密.Split(',');

当我检查使用此代码时

foreach (var item in hi )
{
    Console.WriteLine(item.ToString());
}

在它的旁边显示所有十六进制 我想把字符串数组值 0xfc,0xe8,0x82,0x00和更多的字节数组值是 0xfc,0xe8,0x82,0x00也没有其他值

5 个答案:

答案 0 :(得分:1)

是唯一的字符串,还是该值改变了?您的数组需要动态吗?

let domainName = ""
let hotspotSettings = NEHotspotHS20Settings.init(domainName: domainName, roamingEnabled: true)
let hotspotEAPSettings = NEHotspotEAPSettings()
hotspotEAPSettings.username = *****
hotspotEAPSettings.password = ******
hotspotEAPSettings.isTLSClientCertificateRequired = true
hotspotEAPSettings.supportedEAPTypes = [21]
hotspotEAPSettings.trustedServerNames = [""]
hotspotEAPSettings.ttlsInnerAuthenticationType = .eapttlsInnerAuthenticationMSCHAPv2
print(hotspotEAPSettings)
let hotspotConfig = NEHotspotConfiguration.init(hs20Settings: hotspotSettings, eapSettings: hotspotEAPSettings)
print( hotspotConfig.ssid)
NEHotspotConfigurationManager.shared.apply(hotspotConfig) {[unowned self] (error) in
    print(error?.localizedDescription as Any)// gives Error Domain=NEHotspotConfigurationErrorDomain Code=5 "invalid EAP settings." 
    print(error as Any)
    if let error = error {
        self.showError(error: error)
    } else {
        self.showSuccess()
    }
}

答案 1 :(得分:0)

要从字符串转换为字节数组,可以使用GetBytes方法:

System.Text.Encoding.ASCII.GetBytes(item);

答案 2 :(得分:0)

将每个字符串转换为字节,然后将其存储到registerServiceWorker()变量中。

str

有关更多信息,请参见此link

答案 3 :(得分:0)

对于某些不是Ascii的文本,可以使用Utf-8将字符串转换为字节。

System.Text.Encoding.UTF8.GetBytes(item);

答案 4 :(得分:0)

样本输入:

String[] hi = "00,01,fe,ff".Split(',');

使用lambda函数进行转换以将每个十六进制字符串转换为字节:

Byte[] b = Array.ConvertAll(hi, h => Convert.ToByte(h, 16));

如果您想要其他类型的代表:

Byte[] b = Array.ConvertAll(hi, HexToByte);

private Byte HexToByte(String h) 
{
    return Convert.ToByte(h, 16);
}

相同,但具有表达功能:

Byte[] b = Array.ConvertAll(hi, HexToByte);

private Byte HexToByte(String h) => Convert.ToByte(h, 16);

或者是另一种代表:

Converter<String, Byte> hexToByte = h => Convert.ToByte(h, 16);
Byte[] b = Array.ConvertAll(hi, hexToByte);

Array.ConvertAll在做真实的工作。从十六进制转换要么是可以直接进行内联的琐碎想法,要么是可以给出名称和/或完整实现模块的重要想法。