微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将二进制数据写入文件来自 hexdump

如何解决将二进制数据写入文件来自 hexdump

我尝试在 Go 中做一些非常简单的事情,但我找不到任何资源。

我收到了一个 hexadump,我想将它写入一个文件,但两个文件(src 和 dst)的内容根本不匹配。目前我发现的唯一方法是每 2 个字符手动添加 \x

我尝试遍历我的字符串并添加 \x 字符串看起来相同但输出非常不同。

代码手动工作:

binary.Write(f,binary.LittleEndian,[]byte("\x00\x00\x00\x04\x0A\xFA\x64\xA7\x00\x03\x31\x30"))

但我没有设法从字符串“000000040afa64a700033130”中得到它...

我目前在做什么(这是我在 python3 中所做的):

text := "000000040afa64a700033130"                                                                     
j := 0                                    
f,_ := os.OpenFile("gotest",os.O_WRONLY|os.O_CREATE,0600)                                    
for i := 0; i < len(text); i += 2 {                                    
    if (i + 2) <= len(text) {                                    
        j = i + 2                                    
    }                                                                                                       
    value,_ := strconv.ParseInt(hex,16,8)
    binary.Write(f,value)                                    
    s = append(s,value)                                                                     
}  

解决方法

如果您的十六进制数据位于字符串的 from 中,并且您想写入原始字节,则必须先对其进行转换,更简单的方法是使用 hex.Decode

import (
    "encoding/hex"
    "io/ioutil"
)

func foo() {
    stringData := []byte("48656c6c6f20476f7068657221")
    hexData := make([]byte,hex.DecodedLen(len(stringData)))
    
    _,err := hex.Decode(stringData,hexData)
    // handle err

    err := ioutil.WriteFile("filename",hexData,0644)
    // handle err
}

根据您的使用情况,您可以切换到使用 ioutil.WriteFile。它将给定的字节切片写入文件,如果文件不存在则创建文件,如果文件已经存在则截断它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?