Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Java中将十六进制转换为ANSI (窗口1252)并将ANSI (窗口1252)转换回十六进制字符串?

如何在Java中将十六进制转换为ANSI (窗口1252)并将ANSI (窗口1252)转换回十六进制字符串?
EN

Stack Overflow用户
提问于 2019-05-05 23:31:41
回答 1查看 509关注 0票数 0

如何在Java中将十六进制字符串转换为ansi (窗口1252)和ansi (窗口1252)为十六进制字符串。

python (工作得很好)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
q = "hex string value"

x = bytes.fromhex(q).decode('ANSI')

a = x.encode("ANSI")
a = a.hex()
if q==a:
    print("Correct")

Java (这段代码有问题)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String hexOri = "hex string value";
StringBuilder output = new StringBuilder();
for (int i = 0; i < hexOri.length(); i+=2) {
    String str = hexOri.substring(i, i+2);
    output.append((char)Integer.parseInt(str, 16));
}
System.out.println("ANSI = " + output);
char [] chars = output.toString().toCharArray();
StringBuffer hexOutput = new StringBuffer();

for(int i = 0; i < chars.length; i++){
  hexOutput.append(Integer.toHexString((int)chars[i]));
}
System.out.println("HexOutput = " + hexOutput.toString());
System.out.println(hexOri.equals(hexOutput.toString()));

来自Python的输出

对,是这样

Python的预期输出

对,是这样

来自Java的输出

错误

Java的预期输出

对,是这样

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-06 00:24:41

在java中,字符串是用UTF-16编码的,所以您不能简单地读取/写入字符串的字节来获得您想要的编码表示。

您应该使用String#getBytes(String str, String charset)将所需的编码转换成字符串,并将其序列化为字节数组。

使用new String(buffer,encoding)解码字节数组必须做同样的事情。

在这两种情况下,如果您使用没有字符集的方法,它将使用JVM实例的默认编码(应该是系统字符集)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public static void main(String[] args) {
        String str = "\tSome text [à]";

        try {
            System.out.println(str); //     Some text [à]

            String windowsLatin1 = "Cp1252";
            String hexString = toHex(windowsLatin1, str);

            System.out.println(hexString); // 09536f6d652074657874205be05d

            String winString = toString(windowsLatin1, hexString);

            System.out.println(winString); //   Some text [à]
        } catch (UnsupportedEncodingException e) {
            // Should not happen.
        }

    }

    public static String toString(String encoding, String hexString) throws UnsupportedEncodingException {
        int length = hexString.length();
        byte [] buffer = new byte[length/2];
        for (int i = 0; i < length ; i+=2) {
            String hexVal = hexString.substring(i,i+2);
            byte code = (byte) Integer.parseInt(hexVal,16);
            buffer[i/2]=code;
        }
        String winString = new String(buffer,encoding);
        return winString;
    }

    public static String toHex(String encoding, String str) throws UnsupportedEncodingException {
        byte[] bytes = str.getBytes(encoding);
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < bytes.length; i++) {
            byte b = bytes[i];
            String hexChar = Integer.toHexString(b & 0xff);
            if(hexChar.length()<2) {
                builder.append('0');
            }
            builder.append(hexChar);
        }
        String hexString = builder.toString(); // 09536f6d652074657874205be05d
        return hexString;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56000637

复制
相关文章
redis是CA还是CP呢
CAP原则又称CAP定理,指的是在一个分布式云服务器系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
灬沙师弟
2022/09/16
1.9K1
技术成长是自学还是听课呢
技术成长是需要自学,还是听课呢?我想很多成长中的软件技术人员都会有这样的困惑。软件技术变化太快,我们家族多数是在电厂工作的,我的哥哥姐姐学习的电厂的知识,基本上够他们应用一辈子,但软件行业,这简直是不可能的事情。2000年初还使用的VB,MFC,DEPHI,现在都很难找到踪迹了,现在各种框架更是层出不穷,让人眼花缭乱。2013年,我深入学习了JAVASCRIPT和jquery,这几年又是VUE的天下了。
用户5829239
2019/07/16
3990
Python培训是应该选择线上还是线下呢?
Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取!
python学习教程
2019/08/13
7010
Python培训是应该选择线上还是线下呢?
敏捷开发与文档:互补还是互斥?
2001年,17位软件开发、测试人员(其中包括Ward Cunningham、Jim Highsmith、Alistair Cockburn以及Bob Martin)共同发布了《敏捷宣言》,并正式提出敏捷开发方法,作为传统文档驱动、重量级软件开发过程的替代方案。《宣言》提出了以下基本原则:
敏捷开发
2021/09/10
5710
敏捷开发与文档:互补还是互斥?
是选择Keras还是PyTorch开始你的深度学习之旅呢?
原文:https://medium.com/@karan_jakhar/keras-vs-pytorch-dilemma-dc434e5b5ae0
kbsc13
2020/05/22
5660
React的useState和setState到底是同步还是异步呢?
这里跟useState不同,同步执行时useState也会对state进行逐个处理,而setState则只会处理最后一次
beifeng1996
2022/12/20
1.1K0
问:React的useState和setState到底是同步还是异步呢?
这里跟useState不同,同步执行时useState也会对state进行逐个处理,而setState则只会处理最后一次
beifeng1996
2022/10/02
2.3K1
一文读懂SAFe、DevOps、ITIL和CMMI:互斥还是互补?
作者:Catherine Perry 译者:海松 若您试图使企业以更加精简、高效的方式运作,您可利用几种框架来达到这一目的。但是,首先,这些框架是否能协同工作,是互补或是互斥的问题的答案还不明确。您可能有这样的一些疑问: 如何使这些框架相互配合? 框架之间有哪些差异? 框架之间是否有关联?如果有,是哪些关联? 每个框架背后的方法是什么? 在Techtown的网络研讨会“SAFe、DevOps、ITIL和CMMI等框架互斥还是互补”上,我们有两名论题专家Chris Knotts和Alan Koch简短描述了每
yuanyi928
2018/03/30
1.3K0
this.setState同步还是异步呢?
setState为批量异步的,那么同一次js执行栈中,多此setState()只有最后一次的操作会真的执行,怎么办?
刘嘿哈
2022/10/25
3010
Django 判断访问来源是PC端还是手机端
pc_or_mobile.py # 判断访问来源是pc端还是手机端 import re def judge_pc_or_mobile(ua): """ :param ua: 访问来源头信息中的User-Agent字段内容 :return: """ factor = ua is_mobile = False _long_matches = r'googlebot-mobile|android|avantgo|blackberry|blazer|e
菲宇
2022/04/13
1.2K0
先差异后GSEA呢还是先ssGSEA后差异呢
我们一直以来都是给大家前面的两个方案,就是一定要先根据表达量矩阵做不同分组的差异,而且两者的结果一致性都还不错。但是前面的两个方案都会手动一个批次效应的影响,如果大家没有把握好其中的批次效应的去除,很容易在差异分析阶段就不小心引入了错误。
生信技能树
2022/07/26
1.5K0
先差异后GSEA呢还是先ssGSEA后差异呢
接手了严重过时的软件,到底是该逐步重构还是摧毁重写呢?
有一个应用程序充斥着技术债,严重的过时了,或者只是对用户服务不足,因此,我们需要了解我们的最佳选择是什么——是继续艰难地探索并逐步进行重构更有意义,还是把它全部摧毁并从头开始重写更有意义呢?这就是我们将在本文中探讨的基本难题。所以让我们开始吧…...
深度学习与Python
2020/10/23
4150
接手了严重过时的软件,到底是该逐步重构还是摧毁重写呢?
智能手机的重点是自研芯片,还是做好营销布局呢?
近日,深圳市智信新信息技术有限公司已经与华为投资控股有限公司签署了关于荣耀的收购协议,完成对于荣耀业务的全面收购。华为称,此后不再持有新荣耀公司的任何股份,也不会参与经营和管理决策。
灵猫财经
2020/11/24
5150
是export还是module.exports,是import还是require,是ES6还是CommonJS,是爱❤️还是责任?
众所周知,在上古年代,node的开发一直被 Commonjs 规范所支配着,这也是悲剧发生的导火索,请看灾难现场:
前端小哥哥
2023/05/04
2450
是export还是module.exports,是import还是require,是ES6还是CommonJS,是爱❤️还是责任?
同学 C/C++这块是刚接触还是有学过一些呢?
C语言中交换两个变量值的操作经常会用到,也有不少人提问诸如不用临时变量怎么交换两个变量值的问题,今天在这里做一个总结,也算是对这个问题的统一回复,一共总结了5种方法(名字都是我自己取的,不当之处还请批评指正),希望大家看完有所收获。
诸葛青云
2019/04/29
3680
同学 C/C++这块是刚接触还是有学过一些呢?
https是加一级域名还是二级域名呢 ?
大家都知道ssl证书只对一个域名有效,也就是说不管你是主域名还是二级域名,都是需要单独申请一个ssl证书的,否则就不能使用https访问访问展现,那么https是加一级域名还是二级域名呢?
合信ssl证书
2019/07/10
9.5K0
Java的常量接口思考,项目中的常量是放在接口里还是放在类里呢?
最近在看一本书 Java与模式,里面提了一句不建议使用常量接口,甚至举了个java源码的反例,
ydymz
2018/09/10
2.3K1
web开发中该用 em 还是 rem 呢?
em 和 rem这种相对长度单位进行页面排版是web开发中的最好的选择。在页面排版中较好应用em 和 rem,根据设备尺寸缩放显示元素的大小。这就使得组件在不同设备上都达到最佳的显示效果成为可能。
Javanx
2019/09/04
2K0
问:React的useState和setState到底是同步还是异步呢?_2023-03-13
这里跟useState不同,同步执行时useState也会对state进行逐个处理,而setState则只会处理最后一次
用户10358021
2023/03/13
8420
什么是Promise呢?
我们封装一个网络请求的函数,因为不能立即拿到结果,所以不能像简单的3+4=7一样将结果返回。
Qwe7
2022/05/30
3150

相似问题

PHPUnit & Behat;是互补还是替代?

33

MVC Contrib和MVC Futures:它们是互补还是相互否定?

11

龙卷风还是节点?特快怎么样?节点-django?

110

rspec和shoulda -互补还是替代?

20

不同的mmx、sse和avx版本是互补的还是相互补充的?

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文