gpt4 book ai didi

c# - 将 sbyte 转换为字节

转载 作者:可可西里 更新时间:2023-11-01 08:53:49 25 4
gpt4 key购买 nike

我有一个 sbyte 类型的变量,想将内容复制到 byte。转换不是值转换,而是一点一点的复制。

例如,

如果 mySbyte in bits 是:'10101100',转换后,相应的字节变量也将包含'10101100'位。

最佳答案

让我澄清一下 unchecked商业。 MSDN page指出unchecked用于防止溢出检查,否则,在已检查的上下文中会产生编译错误或抛出异常。

...IF 在已检查的上下文中。

显式检查上下文:

checked { ... } 

或隐式*,在处理编译时常量时:

byte b = (byte)-6; //compile error
byte b2 = (byte)(200 + 200); //compile error

int i = int.MaxValue + 10; //compiler error

但是在处理运行时变量时,上下文是 unchecked 默认情况下**:

sbyte sb = -6;
byte b = (byte)sb; //no problem, sb is a variable


int i = int.MaxValue;
int j = i + 10; //no problem, i is a variable

总结并回答原始问题:

需要byte<->sbyte 常量的转换?使用 unchecked并转换:

byte b = unchecked( (byte) -6 );

需要byte<->sbyte 变量的转换?刚投:

sbyte sb = -6;
byte b = (byte) sb;

* 默认情况下,还有第三种方法来获取已检查的上下文:通过调整编译器设置。例如。 Visual Studio -> 项目属性 -> 构建 -> 高级... -> [X] 检查算术溢出/下溢

** 在 C# 中 默认未选中运行时上下文。例如,在 VB.NET 中,默认的运行时上下文是 CHECKED。

关于c# - 将 sbyte 转换为字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11189004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com