以纯净便携式c。
所以我在从变量中强制转换必须是变量时遇到了麻烦。 char * nib转换为int十六进制。我的想法是我有一个char * nib =“ ab”;或“ 0xab”或任何直接表示两个字符的字符*。然后将其转换为整数。并将其写入文件以进行一对一写入。所以我从char * nib =“ 0xab”开始;然后我大概把它写成一个int,然后写成一个十六进制转储或编辑,结果就是ab。
我已经可以直接声明它为常量了……但是笔尖始终是静态的。
这必须是一对一的,以两个字符串或笔尖开头。不进行任何转换,请进行纯转换。
那么您可以直接将其写入文件而不进行转换吗?对于名称为length的值,三个查找表似乎有点多
答案 0 :(得分:1)
由于强制转换不会更改值的二进制表示形式,因此无法将2个字符(2个字节)转换为1个字节。
您最接近的将看起来像十六进制的字符串转换为将显示类似内容的值的方法是,通过char* nib = "\x0A\x0B"
这样的转义序列使用0-15个字符,并将(*((short*)nib)
)转换为2 -byte值(在这种情况下为0x0A0B
)并将其存储到文件中(我不确定是否存在2个字节的 portable 整数类型-short
通常为2字节宽,但不必为2个字节)。不幸的是,由于不同的体系结构可能具有不同的字节顺序,因此我认为没有一种可移植的方式将2字节整数值存储到文件中。
逐个字符地写字符串值可能是最安全的方法。或将字符串转换为int
和usual way,并使用您自己的整数读/写代码以确保可移植性。