【问题标题】:How to literaly turn a string value into a value of a byte?如何从字面上将字符串值转换为字节值?
【发布时间】:2019-06-26 14:31:46
【问题描述】:

我有一个字符串列表,其值如下:

example[0] = "0xFF";
example[1] = "0xA8";

我想要做的就是将这些值设置为字节值,例如:

byte x = Convert.ToByte(example[0]);
byte y = Convert.ToByte(example[1]);

太好了,我该怎么办?

注意:我确实需要字节变量包含“0xFF”作为其值,例如...

【问题讨论】:

    标签: c# string type-conversion byte


    【解决方案1】:

    只需将ToByte 与适当的Base 一起使用。 ToByte 将转换值FF 和文字0xFF,因此无需删除0x

    var byte = Convert.ToByte(hex, 16)
    

    var hexes = new string[] { "0xFF", "0xA8"};
    var results = hexes.Select(x => Convert.ToByte(x, 16))
                       .ToArray();
    
    foreach (var item in results)
        Console.WriteLine(item);
    

    输出

    255
    168
    

    更新

    但是有一些方法可以转换那些保留十六进制的字符串 结构体?你知道的:byte x = 0xFF;

    var hexes = new string[] { "0xFF", "0xA8" };
    var results = hexes.Select(x => $"byte {Convert.ToByte(x, 16)} = {x}")
                       .ToArray();
    
    foreach (var item in results)
       Console.WriteLine(item);
    

    输出

    byte 255 = 0xFF
    byte 168 = 0xA8
    

    Full Demo Here


    其他资源

    ToByte(String, Int32)

    指定基数中数字的字符串表示形式转换为 一个等效的 8 位无符号整数。

    【讨论】:

    • 嗨,迈克尔!感谢您的回答,但实际上,我需要输出与字符串完全相同。这样我就有了,例如,“255”而不是“0xFF”......知道吗?哈哈
    • @IgorHenriques 这确实将十六进制文字转换为字节,dotnetfiddle.net/NzgRSx
    • 是的。我对其进行了测试,但是有一些方法可以转换那些保持十六进制结构的字符串吗?你知道的:byte x = 0xFF;
    • 哈哈抱歉 :( 但它返回一个字符串...无论如何我都尝试解析到我的列表,它向我展示了经典的Input string was not in a correct format。为什么不能简单地设置值“0xFF”如果我们可以手动声明变量...
    • @IgorHenriques 这可能很容易,困难的部分是试图找出你真正想要的东西。你能用尽可能多的信息更新你的问题吗,因为这可能会一直循环下去
    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    相关资源
    最近更新 更多