将C字符串转换为二进制表示形式
|
在ANSI C中,如何将字符串转换为二进制字节数组?
所有的Google搜索和搜索都为我提供了C ++和其他(而不是C)的答案。
我的一个想法是将字符串转换为ASCII,然后将每个ASCII值转换为其二进制。 (Du!)我知道这是最愚蠢的想法,但是我不确定是否有其他选择。
我听说过Java中的编码功能。我不确定这是否适合相同的目的并且可以被C采纳。
string = \"Hello\"
bytearr[] = 10100101... some byte array..
如果有人可以对此有所启发,那就太好了。
谢谢!
没有找到相关结果
已邀请:
6 个回复
墩瓣茅械
输入和输出示例:
容淑阔九
扑北爱
死狸蔽垂藐
的宽度是1个字节,因此
或
是一个字节数组。 在大多数其他语言(例如Java)中,字符串数据类型通过使用诸如UTF-8之类的编码在一定程度上照顾诸如编码之类的概念。在C中不是这种情况。如果要读取UTF-8字符串,其中的内容包括多字节值,则我的字符将由数组中的两个存储桶(或可能更多)表示。 从另一个角度来看,请考虑C中的所有类型对于您的系统都具有固定的宽度(尽管实现可能会有所不同)。 因此,您要操作的字符串是一个字节数组。 我猜接下来的问题是如何显示这些字节?这很简单:
我想不出为什么要将该输出转换为二进制的原因,但是如果您这么想的话,可以这样做。
完趣镐
但是,如果您对这种代码不太谨慎,则当您需要支持非ASCII字符时,就有遭受伤害的危险。
缮记箔
要将十六进制字符串转换为字节数组,请执行以下操作:
Source是指向包含十六进制字符串的char数组的指针。 目标是指向将包含字节数组的char数组的指针。 要将字节数组转换为十六进制字符串,请执行以下操作:
目标是指向包含十六进制字符串的char数组的指针。 Source是指向将包含字节数组的char数组的指针。 以下是一些缺少的宏: