Кто-то может объяснить шестнадцатеричные смещения мне?

CSV-файлы имеют только один набор столбцов, указанный в начале файла. Таким образом, ваши фреймы данных также должны иметь общий набор столбцов. Если они это сделают, то CSV выглядит так, как я думаю, вы предполагаете, что он должен:

$ echo -e "a,b,c\n1,2,3" > a.csv
$ echo -e "a,b,c\n4,5,6" > b.csv
$ echo -e "a,b,c\n7,8,9" > c.csv
$ echo -e "a,b,c\n10,11,12" > d.csv
$ python3
>>> import pandas as pd
>>> df1 = pd.read_csv(r"a.csv")
>>> df1
   a  b  c
0  1  2  3
>>> df2 = pd.read_csv(r"b.csv")
>>> df3 = pd.read_csv(r"c.csv")
>>> df4 = pd.read_csv(r"d.csv")
>>> finaldf = pd.concat([df1, df2, df3,df4])
>>> finaldf
    a   b   c
0   1   2   3
0   4   5   6
0   7   8   9
0  10  11  12
>>> finaldf.to_csv("Compiled_Project.csv",encoding='utf-8',index=False)
>>> exit()
$ cat Compiled_Project.csv 
a,b,c
1,2,3
4,5,6
7,8,9
10,11,12

Флаг index=false, потому что вы, вероятно, не хотите метки строк (все нули) в каждом строки.

21
задан GEOCHET 26 September 2008 в 18:57
поделиться

6 ответов

0x04 является шестнадцатеричным числом для 4 (0x является просто общей конвенцией префикса для основы 16 представлений чисел - так как многие люди думают в десятичном числе), и это было бы четвертым байтом (так как они говорят, что смещение, вероятно, считают первый байт как байт 0, таким образом, смещает 0x04, был бы 5-й байт).

я предполагаю, что они говорят, что 4-й и 5-й байт вместе был бы 28315, но они говорили, с прямым порядком байтов ли это или с обратным порядком байтов?

28315 (десятичное число) 0x6E9B в шестнадцатеричной нотации, вероятно, в файле в порядке 0x9B 0x6E, если это - прямой порядок байтов.

Примечание: и обратный порядок байтов с прямым порядком байтов относится к байтам порядка, записаны. Люди типичная десятичная запись записи и шестнадцатеричный способом с обратным порядком байтов, таким образом:

256 был бы записан как 0x0100 (цифры слева являются самым большим масштабом)

, Но это берет два байта, и системы с прямым порядком байтов запишут младший байт сначала: 0x00 0x01. Системы с обратным порядком байтов запишут высокий байт сначала: 0x01 0x00.

Обычно системы Intel являются прямым порядком байтов, и другие системы варьируются.

11
ответ дан 29 November 2019 в 21:58
поделиться

0x04 в шестнадцатеричном числе 4 в десятичном числе. 0x10 в шестнадцатеричном числе 16 в десятичном числе. calc.exe может преобразовать между шестнадцатеричным числом и десятичным числом для Вас.

Смещение 4 средства 4 байта от запуска файла. Сместите 0, первый байт в файле.

1
ответ дан 29 November 2019 в 21:58
поделиться

Думайте о двоичном файле как о линейной матрице байтов.

0x04 был бы 5-м (в 0 основанных массивах) элемент в массиве, и 0x05 будет 6-м.

два значения в 0x04 и 0x05 могут быть OR'ed вместе для создания номера 28,315.

Начиная со значения, которое Вы читаете, 16 битов, Вам нужно к сдвигу разряда одно значение и затем ИЛИ их вместе, т.е. если бы Вы управляли файлом в c#, то Вы использовали бы что-то вроде этого:

int value = (ByteArray[4] >> 8) | ByteArray[5]);

, Надо надеяться, это помогает объяснить, как шестнадцатеричное число обращается к работе.

3
ответ дан 29 November 2019 в 21:58
поделиться

Это является 4-м, и 5-е XX кодируют Ваш просмотр...

1   2  3  4  5  6
01  AB 11 7B FF 5A

Так, 0x04 и 0x05 "7B" и "FF".

Принятие, что Вы говорите в Вашем случае 7BFF, должно быть равно Вашему требуемому значению.

HTH

2
ответ дан 29 November 2019 в 21:58
поделиться

Взгляд на байты 4 и пять у них должен быть 0x6E 0x9B значений (или 0x9B 0x6E) в зависимости от Вашего порядка байтов.

1
ответ дан 29 November 2019 в 21:58
поделиться

Запустите здесь . Как только Вы изучаете, как считать шестнадцатеричные значения, Вы будете в намного лучшей форме для фактического решения проблемы.

0
ответ дан 29 November 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: