Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python s以及常见的转义,如'\n',如果可能,只对其他值使用十六进制反斜杠转义。_Python_Numpy_Notepad++_Hexdump - Fatal编程技术网

Python s以及常见的转义,如'\n',如果可能,只对其他值使用十六进制反斜杠转义。

Python s以及常见的转义,如'\n',如果可能,只对其他值使用十六进制反斜杠转义。,python,numpy,notepad++,hexdump,Python,Numpy,Notepad++,Hexdump,您可以很容易地看出文件实际上有8个字节,与您期望的8个字节相同(01 00 00 2C 01 00),只需使用记事本++以外的任何东西查看文件,包括仅将您的off=np.fromfile(fileobj2,dtype=np.int32)替换为off=fileobj2.read(),然后printing字节(这将为您提供b'\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00'`*) 而且,从你的评论来看,在我提出这个建议之后,你尝试过,并且看到了这一点 这意味

您可以很容易地看出文件实际上有8个字节,与您期望的8个字节相同(
01 00 00 2C 01 00
),只需使用记事本++以外的任何东西查看文件,包括仅将您的
off=np.fromfile(fileobj2,dtype=np.int32)
替换为off=fileobj2.read()
,然后
print
ing字节(这将为您提供
b'\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00'`*)

而且,从你的评论来看,在我提出这个建议之后,你尝试过,并且看到了这一点

这意味着这要么是记事本++中的一个bug,要么是您使用它的方式有问题;Python、NumPy和您自己的代码都非常好




*如果不清楚:
'\x2c'
,“
是同一个字符,
字节
对可打印的ASCII字符使用可打印的ASCII表示,以及常见的转义,如
'\n'
,如果可能,仅对其他值使用十六进制反斜杠转义。

首先,一个
int32
需要4个字节,而不是2个字节。接下来,除了记事本++之外,您是否尝试过在其他程序中读取该文件?你可以很容易地在Python中完成它;不要使用
off=np.fromfile(fileobj2,dtype=np.int32)
,只需执行
off=fileobj2.read()
,然后打印字节。您应该看到类似于
b'\x01\x00\x00\x00\x01\x00\x00'
;如果您看到的是
b'\x01\x00\xc4\xac\x00'
,那么您知道是文件被破坏了,而不是记事本++。@abarnert实际上是一个打字错误(注意,我已经说过“我希望8个字节…”)。嗯,似乎记事本++确实坏了,这很奇怪,以前从未发生过:/,我可以问/把这个问题转换成“如何让记事本++与十六进制插件一起工作”吗?或者这太离题了?你不应该试着把一个问题转换成另一个问题。只要问一个新的。我认为新的一个可能会更多地讨论类似的主题,但是你应该阅读这两个站点(以及其他一些听起来相关的Stack Exchange站点)上的帮助,然后自己决定。这可能与notepad++或插件的版本有关吗?提到几年前Npp插件中的一个空字符问题。首先,
int32
需要4个字节,而不是2个字节。接下来,除了Notepad++,您是否尝试过在任何其他程序中读取该文件?你可以很容易地在Python中完成它;不要使用
off=np.fromfile(fileobj2,dtype=np.int32)
,只需执行
off=fileobj2.read()
,然后打印字节。您应该看到类似于
b'\x01\x00\x00\x00\x01\x00\x00'
;如果您看到的是
b'\x01\x00\xc4\xac\x00'
,那么您知道是文件被破坏了,而不是记事本++。@abarnert实际上是一个打字错误(注意,我已经说过“我希望8个字节…”)。嗯,似乎记事本++确实坏了,这很奇怪,以前从未发生过:/,我可以问/把这个问题转换成“如何让记事本++与十六进制插件一起工作”吗?或者这太离题了?你不应该试着把一个问题转换成另一个问题。只要问一个新的。我认为新的一个可能会更多地讨论类似的主题,但是你应该阅读这两个站点(以及其他一些听起来相关的Stack Exchange站点)上的帮助,然后自己决定。这可能与notepad++或插件的版本有关吗?提到几年前Npp插件中的一个空字符问题。首先,
int32
需要4个字节,而不是2个字节。接下来,除了Notepad++,您是否尝试过在任何其他程序中读取该文件?你可以很容易地在Python中完成它;不要使用
off=np.fromfile(fileobj2,dtype=np.int32)
,只需执行
off=fileobj2.read()
,然后打印字节。您应该看到类似于
b'\x01\x00\x00\x00\x01\x00\x00'
;如果您看到的是
b'\x01\x00\xc4\xac\x00'
,那么您知道是文件被破坏了,而不是记事本++。@abarnert实际上是一个打字错误(注意,我已经说过“我希望8个字节…”)。嗯,似乎记事本++确实坏了,这很奇怪,以前从未发生过:/,我可以问/把这个问题转换成“如何让记事本++与十六进制插件一起工作”吗?或者这太离题了?你不应该试着把一个问题转换成另一个问题。只要问一个新的。我认为新的一个可能会更多地讨论类似的主题,但是你应该阅读这两个站点(以及其他一些听起来相关的Stack Exchange站点)上的帮助,然后自己决定。这可能与notepad++或插件的版本有关吗?提到几年前Npp插件中的一个空字符问题。首先,
int32
需要4个字节,而不是2个字节。接下来,除了Notepad++,您是否尝试过在任何其他程序中读取该文件?你可以很容易地在Python中完成它;不要使用
off=np.fromfile(fileobj2,dtype=np.int32)
,只需执行
off=fileobj2.read()
,然后打印字节。您应该看到类似于
b'\x01\x00\x00\x00\x01\x00\x00'
;如果您看到的是
b'\x01\x00\xc4\xac\x00'
,那么您知道是文件被破坏了,而不是记事本++。@abarnert实际上是一个打字错误(注意,我已经说过“我希望8个字节…”)。嗯,似乎记事本++确实坏了,这很奇怪,以前从未发生过:/,我可以问/把这个问题转换成“如何让记事本++与十六进制插件一起工作”吗?或者这太离题了?你不应该试着把一个问题转换成另一个问题。只要问一个新的。我认为新的一个可能会更多地讨论类似的主题,但是你应该阅读这两个站点(以及其他一些听起来相关的Stack Exchange站点)上的帮助,然后自己决定。这可能与notepad++或插件的版本有关吗?提到几年前Npp插件中的一个空字符问题。但他的问题是为什么他会得到5字节
0100c4ac00
instea
import numpy as np
filename = "test.dat"
print(filename)
fileobj = open(filename, mode='wb')
off = np.array([1, 300], dtype=np.int32)
off.tofile(fileobj)
fileobj.close()

fileobj2 = open(filename, mode='rb')
off = np.fromfile(fileobj2, dtype = np.int32)
print(off)
fileobj2.close()
01 00 C4 AC 00
In [478]: np.array([1,300],np.int32).tofile('test')

In [479]: with open('test','rb') as f: print(f.read())
b'\x01\x00\x00\x00,\x01\x00\x00'
In [505]: np.array([1,300]).tostring()
Out[505]: b'\x01\x00\x00\x00,\x01\x00\x00'
[255]    
b'\xff\x00\x00\x00'

[256]
b'\x00\x01\x00\x00'

[300]
b',\x01\x00\x00'

[1,255]
b'\x01\x00\x00\x00\xff\x00\x00\x00'
In [513]: np.frombuffer(np.array([1,300]).tostring(),int)
Out[513]: array([  1, 300])

In [514]: np.frombuffer(np.array([1,300]).data,int)
Out[514]: array([  1, 300])