0

正如标题所暗示的那样,基本上我通过联合将 char 数组转换为 unsigned long int(或者更确切地说,读取为 unsigned long int)。

union {
    char buffer[8];
    unsigned long int buffer_ui;
} char_array_ui;

我将 8 个字符读入 char 数组,然后将这 8 个字符的值作为 unsigned long int 返回。(对于那些好奇的人,这是因为我正在从 /dev/urandom 读取字符)。这样做安全吗?我的程序中是否有任何可能出现的内容?

4

1 回答 1

1

需要注意的 2 件事:

  • 只要unsigned long8 字节的大小是正确的 - 可能并非每个平台都如此。
  • 不同平台上的字节序可能不同,从而产生不同的结果。如果您读取数据,unsigned long它会自动处理以产生正确的结果,但如果您逐个字节地读取它,那么顺序就是您存储字节的方式。
于 2013-03-13T22:15:28.947 回答