【问题标题】:string format negative hexadecimal字符串格式 负十六进制
【发布时间】:2013-10-14 22:53:10
【问题描述】:

有没有办法为负十六进制自定义格式化字符串?

我想要一种显示格式,如 -$1,X 或 $A,X。如果值为 0xff,我希望它显示为 -$1。该值是有符号值。我注意到 {0:X2} 会将其显示为“ff”而不是“-1”。

【问题讨论】:

  • 所以如果是正数,你希望它格式化为十六进制,如果为负数,你希望它格式化为十进制?
  • 我真的希望它采用十六进制格式,但如果设置了第 8 位,则使用负号和 2 的补码。
  • 另一个例子是 -$59 而不是 $ffa7

标签: c# hex string.format


【解决方案1】:

我不确定我是否真的理解你的问题。让我们假设您正在处理 sbyte 类型的项目(因为它是唯一在上下文中有意义的类型)。您可以创建这样的方法:

String FormatByte(sbyte b) {
    return (b & 0x80) == 0x80 ? String.Format("-${0}", -b) : String.Format("${0:X}", b);
    }

使用 -59 调用时返回 -$59,使用 10 调用时返回 $A

【讨论】:

  • 关闭,但它会返回 -$10 而不是 -$A。
  • 通过将第一个 String.Format("-${0}", -b) 也改为 -${0:X} 解决
猜你喜欢
  • 1970-01-01
  • 2012-08-15
  • 2011-05-04
  • 2022-07-08
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多