如何直接打印数字作为字符串?

时间:2016-01-29 17:31:29

标签: c string stdout

printf("%s", 0x216f6c6c6548); // "Hello!" reversed

应打印“你好!”但事实并非如此。我期待同样的结果:

long long ll = 0x216f6c6c6548;
printf("%s", &ll);

printf("%s", "Hello!");

是否可以将数字打印为字符串?

更新

是否可以将直接数字打印为字符串?

2 个答案:

答案 0 :(得分:6)

您必须从数字中提取字符:

print_ull_as_str (unsigned long long ll)
{
    while (ll != 0) { printf("%c", (char )(ll & 0xffu)); ll >>= 8; }
}

答案 1 :(得分:2)

接受回答后

易于打印直接。使用复合文字来形成字符串。

$(rewardObj.element).css()

输出

#include <stdio.h>
#define SBprint(x) ((char [8+1]){ \
    1ULL*x>>0 , 1ULL*x>> 8, 1ULL*x>>16, 1ULL*x>>24, \
    1ULL*x>>32, 1ULL*x>>40, 1ULL*x>>48, 1ULL*x>>56, 0})


int main(void) {
  printf("%s", SBprint(0x216f6c6c6548));
  printf("%s", SBprint(0x65726120776F480A));
  printf("%s", SBprint(0x0A3F756F7920));
}

如果您的编译器使用小端,甚至更简单。

Hello!
How are you?