我试图将无符号字符转换为它们的十六进制ASCII值,但以二进制形式表示。
例如:
无符号字符C转换成0100 0011(43)
我可以从十六进制转换为二进制,问题是如何从字符获取其十六进制值。
for (n = 0; n < 8; n++){
binary[n] = (letter >> n) & 1;}
我一直得到错误的值,因为字母以其自身的ASCII值而不是十六进制ASCII值的二进制版本输入。
我试图将无符号字符转换为它们的十六进制ASCII值,但以二进制形式表示。
例如:
无符号字符C转换成0100 0011(43)
我可以从十六进制转换为二进制,问题是如何从字符获取其十六进制值。
for (n = 0; n < 8; n++){
binary[n] = (letter >> n) & 1;}
我一直得到错误的值,因为字母以其自身的ASCII值而不是十六进制ASCII值的二进制版本输入。
#include <stdio.h>
int main() {
unsigned char letter = 'C';
int binary[8];
for(int n = 0; n < 8; n++)
binary[7-n] = (letter >> n) & 1;
/* print result */
for(int n = 0; n < 8; n++)
printf("%d", binary[n]);
printf("\n");
return 0;
}
for(int n = 7; n >= 0; n--)
。 - Weather Vaneletter
没有被改变。 - the busybeechar
至少为8位宽,使用所示代码将不会出现signed char
的问题。 - the busybee