从文件中读取十六进制数据并将其传递给一个将数据作为字符串的write函数

2024-09-29 23:27:18 发布

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

我想将十六进制数(例如0xff)传递到一个write函数中,该函数将数据作为一个字符串,例如h.write('\xFF')这行得通。 但是当我从一个变量中传递十六进制数并试图在write函数中使用这些数据时,我无法做到那个。下面是我试过的密码。在

a = 'ff'
h.write('\x%s'%(a))
I also tried
a = 0xff
h.write('\x%x'%(a))
I also tried
a = 0xff
a = str(a)
a = '\\'+'x'+'%s'%(a)
h.write('a')

我实际上在用FTDIFT2232H usb并行8位转换器。 没有错误信息,只是我看不到示波器屏幕上的输出。只有当我硬编码时它才会工作,比如h.write('\xFF')

Python版本=3.6
64位操作系统Win7

谢谢你, 斯里贝巴


Tags: 数据函数字符串密码屏幕writeusbalso
1条回答
网友
1楼 · 发布于 2024-09-29 23:27:18

如果您正在从文件中读取十六进制字符串并希望将其转换为字节,那么简单的方法是使用binascii.unhexlify。下面是一个简短的演示。在

from binascii import unhexlify

src = 'ffaa5500'
out = unhexlify(src)
print(out)

输出

^{pr2}$

如果将out写入以二进制模式打开的文件(或类似文件的对象),则该文件将接收字节\xff\xaa\x55\x00。在

但是,如果要生成要转换为字节的数字数据,那么最简单的方法是使用^{}对象。下面是一个合成单周期正弦波的例子。在

from math import radians, sin

# Make a single cycle of a sin wave
data = bytearray()
for i in range(360):
    y = sin(radians(i))
    v = int(0.5 + 127 * (1 + y))
    data.append(v)

with open('scope.bin', 'wb') as f:
    f.write(data)

这是scope.bin':

00000000  7f 81 83 86 88 8a 8c 8e  91 93 95 97 99 9c 9e a0  |................|
00000010  a2 a4 a6 a8 aa ad af b1  b3 b5 b7 b9 bb bd bf c0  |................|
00000020  c2 c4 c6 c8 ca cb cd cf  d1 d2 d4 d6 d7 d9 da dc  |................|
00000030  dd df e0 e2 e3 e4 e6 e7  e8 ea eb ec ed ee ef f0  |................|
00000040  f1 f2 f3 f4 f5 f6 f6 f7  f8 f8 f9 fa fa fb fb fc  |................|
00000050  fc fc fd fd fd fe fe fe  fe fe fe fe fe fe fe fe  |................|
00000060  fd fd fd fc fc fc fb fb  fa fa f9 f8 f8 f7 f6 f6  |................|
00000070  f5 f4 f3 f2 f1 f0 ef ee  ed ec eb ea e8 e7 e6 e4  |................|
00000080  e3 e2 e0 df dd dc da d9  d7 d6 d4 d2 d1 cf cd cb  |................|
00000090  ca c8 c6 c4 c2 c0 bf bd  bb b9 b7 b5 b3 b1 af ad  |................|
000000a0  aa a8 a6 a4 a2 a0 9e 9c  99 97 95 93 91 8e 8c 8a  |................|
000000b0  88 86 83 81 7f 7d 7b 78  76 74 72 70 6d 6b 69 67  |.....}{xvtrpmkig|
000000c0  65 62 60 5e 5c 5a 58 56  54 51 4f 4d 4b 49 47 45  |eb`^\ZXVTQOMKIGE|
000000d0  43 41 3f 3e 3c 3a 38 36  34 33 31 2f 2d 2c 2a 28  |CA?><:86431/-,*(|
000000e0  27 25 24 22 21 1f 1e 1c  1b 1a 18 17 16 14 13 12  |'%$"!...........|
000000f0  11 10 0f 0e 0d 0c 0b 0a  09 08 08 07 06 06 05 04  |................|
00000100  04 03 03 02 02 02 01 01  01 00 00 00 00 00 00 00  |................|
00000110  00 00 00 00 01 01 01 02  02 02 03 03 04 04 05 06  |................|
00000120  06 07 08 08 09 0a 0b 0c  0d 0e 0f 10 11 12 13 14  |................|
00000130  16 17 18 1a 1b 1c 1e 1f  21 22 24 25 27 28 2a 2c  |........!"$%'(*,|
00000140  2d 2f 31 33 34 36 38 3a  3c 3e 3f 41 43 45 47 49  |-/13468:<>?ACEGI|
00000150  4b 4d 4f 51 54 56 58 5a  5c 5e 60 62 65 67 69 6b  |KMOQTVXZ\^`begik|
00000160  6d 70 72 74 76 78 7b 7d                           |mprtvx{}|
00000168

相关问题 更多 >

    热门问题