gpt4 book ai didi

java - 从文件 java 读取原始字节(字节序问题)

转载 作者:行者123 更新时间:2023-12-01 14:20:07 26 4
gpt4 key购买 nike

好的,我有一个包含 8 个字节的文件:

hexdump /tmp/temp_session_TGAyUSfICJgY.txt
0000000 b21b 113c bf3a 4a92
0000008

当我对文件进行分类时,我看到了 gobbly-gook,这是正常且符合预期的(您可能会看到真实的字符,具体取决于您的编码)

cat /tmp/temp_session_TGAyUSfICJgY.txt 
�<:��J

现在在java中,当我尝试读取字节时,它们会向后显示。我的代码如下:

            InputStream input = new FileInputStream(session_file_param);
int a = 0;
int i=0;
while(a != -1) {
a = input.read();
System.out.println(a);
if(a != -1) {
pw[i] = (byte)a;
}
i++;
}

System.out.println("String representation of session pw is " + pw.toString());

我的输出是(为了可读性添加了 =HEX):

27 = 1b
178 = b2
60 = 3c
17 = 11
58 = 3a
191 = bf
146 =92
74 = 4a
-1
String representation of pw is [B@7f971afc

如果我正在逐字节读取原始文件,字节不应该按顺序显示吗?基本上每个两个字节 block 都会被翻转。

编辑:

你说得对,抱歉吵醒了。我做了以下测试:

#include <stdio.h>
#include <stdlib.h>

int main() {
FILE *fp = fopen("/tmp/temp_session_TGAyUSfICJgY.txt", "r");
char byte;
while (!feof(fp)) {
fread(&byte,1,1, fp);
printf("%x\n", byte);
}
}

和输出:

1b
ffffffb2
3c
11
3a
ffffffbf
ffffff92
4a

最佳答案

看起来 hexdump 在默认情况下以两个字节 block 输出文件,并反转它们。

尝试使用

hexdump -C /tmp/temp_session_TGAyUSfICJgY.txt

xxd /tmp/temp_session_TGAyUSfICJgY.txt

查看按文件中出现的顺序显示的字节。

关于java - 从文件 java 读取原始字节(字节序问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com