Numpy from string(uint8和uint16的差异)[将两个uint8值组合成一个uint16值]

2024-09-27 21:27:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Java中有一个音频文件,当我读取AudioInputStream并将其转换为字节数组时,我得到-128和{}之间的值。我需要将这些值转换为-32768和{}之间的范围。所以我想我需要将Java数组中的每两个值合并为一个值。在

在Python中,我可以读取该文件并通过numpy.fromstring函数将其转换为字符串。假设我将uint8值存储在A中,uint16值存储在B中

A[2*i] = -50

A[2*i+1] = 21

B[i] = 5582

我有这样的价值观。不知怎么的,我认为我需要把A中的每两个值合并起来才能得到B?在


Tags: 文件函数字符串numpy字节数组java音频文件
1条回答
网友
1楼 · 发布于 2024-09-27 21:27:28

使用^{}

byte[] b = { 37, -39, -112, -32, 123, -40, -114, 121 };
short[] s = new short[b.length / 2];
ByteBuffer buf = ByteBuffer.wrap(b);
// buf.order(ByteOrder.LITTLE_ENDIAN);
for (int i = 0; i < s.length; i++)
    s[i] = buf.getShort();
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(s));

输出(big-endian,默认值):

^{pr2}$

输出(little-endian,通过取消注释行):

[37, -39, -112, -32, 123, -40, -114, 121]
[-9947, -8048, -10117, 31118]

相关问题 更多 >

    热门问题