【问题标题】:Bit-Operations on a character in ANSI C [duplicate]ANSI C中字符的位操作[重复]
【发布时间】:2020-05-26 17:30:31
【问题描述】:

谁能告诉我在C中用二进制表示字符的好方法? 我需要将给定的字符视为 1 和 0 的序列。 例如,如果我得到'a' 作为输入,我希望将其视为 01100001 并最终返回 00010110(一个带有反转半字节的字节)。 用unigned char好不好?我应该使用一个 8 元素的整数数组来存储一个字节吗?

int main(void){
   unsigned char c = 'a';

   return 0;
}

【问题讨论】:

  • edit您的问题并添加更多详细信息。对于“字符”,您是指 ASCII 字符还是该术语是否包括其他可能使用带有第 7 位设置的单字节代码或多字节代码的字符? “我希望将其视为 01100001”到底是什么意思,是指以二进制格式输出(如 printf)还是转换为字符串? unsigned char 可用于位移、屏蔽和组合等操作。
  • @Armali “达到完美,不是没有什么可添加的,而是没有什么可带走的。” - 安托万·德·圣埃克苏佩里
  • Is there a printf converter to print in binary format?: 57 个答案可以从中挑选“最好的”,足以满足任何人的个人标准。
  • 要求最好的方法在这里通常是不受欢迎的,因为它涉及很多意见。要求好的方法或符合最佳实践的方法会更好。就我而言,即使我知道一个好的方法,我也永远不会回答要求最佳方法的问题,因为我很确定它可以改进......

标签: c bit unsigned ansi


【解决方案1】:

一个带有倒置半字节的字节

由于您似乎不关心 8 位以外的字符,您可以使用c = c<<4|c>>4

【讨论】:

  • 我的问题是关于使用的类型,而不是关于操作。
  • Bodo 在他的评论中已经回答了关于类型的问题,并且您自己的帖子中包含了答案:unsigned char
猜你喜欢
  • 1970-01-01
  • 2020-09-13
  • 2015-01-25
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
相关资源
最近更新 更多