我有一个文本渲染器,它使用字符串中的负char值来渲染我制作的字体中的自定义符号,而不是常规的ascii文本。
text.write("Hello! _"); // insert a heart at the underscore somehow...
// the heart's value is char -10
无论如何得到一个负值char值,静态写在双引号内?或者有没有办法在引号之外执行此操作,但仍然是字符串文字?
编辑:
为了澄清一点,我不得不在这个特殊情况下使用char
数组。代码内部使用std::string
,所有正值均由标准ascii字形获取。我的目标是能够将一个负数表示为一个字符串文字来表示额外的符号。所以以下是真的:
const char * literal = "a literal w/ a negative char value as the 10th element"
literal[9] == -10; // would be true
答案 0 :(得分:4)
你可以写"Hello! \xf6"
。 f6 16 = -10 + 256
这是有效的,因为在8位2 - 补码整数中,负值-128 .. -1
具有与256个更大的无符号值128 .. 255
相同的位表示。
答案 1 :(得分:1)
我认为你没有明白在内存中如何表示正负整数。
每个" unsigned char" > 127将被解释为"签名字符" < 0,即当你使用不在ASCII-Set中的字符并将它们解释为有符号字符时,它们会自动为负数。
所以我看到两种一般的方法让你进入"否定"字符值:
一些参考资料: