gpt4 book ai didi

c# - 将十六进制数转换为带符号的短整数

转载 作者:行者123 更新时间:2023-12-02 04:48:26 24 4
gpt4 key购买 nike

我正在尝试将一个包含十六进制值的字符串转换为它在 C# 中的等效带符号短

例如:

-1 的等效十六进制数是 0xFFFF(两个字节)

我想做相反的事情,即我想将 0xFFFF 转换为 -1

我正在使用

 string x = "FF";
short y = Convert.ToInt16(x,16);

但是输出 y 是 255 而不是 -1,我需要等价的有符号数

谁能帮帮我?谢谢

最佳答案

当您的输入是“FF”时,您将得到一个字节的十六进制字符串表示。
如果您尝试将其分配给一个短整数(两个字节),则不会考虑将符号应用于转换后的数字的最后一位,因此您将获得 255 值。

相反,“FFFF”的字符串表示表示最后一位设置为 1 的两个字节,因此如果分配给像 Int16 这样的有符号类型,结果是负数,而如果分配给像 ushort 这样的无符号类型,结果是 65535 -

string number = "0xFFFF";
short n = Convert.ToInt16(number, 16);
ushort u = Convert.ToUInt16(number, 16);

Console.WriteLine(n);
Console.WriteLine(u);

number = "0xFF";
byte b = Convert.ToByte(number, 16);
short x = Convert.ToInt16(number, 16);
ushort z = Convert.ToUInt16(number, 16);

Console.WriteLine(n);
Console.WriteLine(x);
Console.WriteLine(z);

输出:

-1
65535
-1
255
255

关于c# - 将十六进制数转换为带符号的短整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19338340/

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