2017-09-28 129 views
-3

我需要制作一个将UTF-8文件转换为十进制的脚本。在这个过程中,我将在代码中引入一个文件并针对转换机制运行它。我有纯粹的UTF-8文件(纠正我,如果我错了),我将在下面附上。我的主要目的是从UTF-8转换中产生一个短整型数据。二进制数据为整数?

00000000: f712 db12 141a ac1c 2018 ee2e 3b20 7a19 ........ ...; z. 
00000010: 8f15 2813 c911 ca10 4710 cd0e 980e 3d11 ..(.....G.....=. 
00000020: 6a17 3a21 3b30 ab49 e269 ff7f ff7f ff7f j.:!;0.I.i...... 
00000030: ff7f ff7f ff7f 3067 7b19 67c8 2092 998f ......0g{.g. ... 
00000040: 65af edbd 00ad d191 0080 0080 9382 2b91 e.............+. 
00000050: 85af 6fba 10b4 1a9f c287 0080 3286 7fa2 ..o.........2... 
00000060: 8fd0 5bf9 db15 0228 6433 b33c 3e42 c742 ..[....(d3.<>B.B 
00000070: 9f3f 213d d33a bb38 b534 a930 072c 9e26 .?!=.:.8.4.0.,.& 
00000080: 8f1e ab14 2609 2aff 44f9 63f7 56f8 65fb ....&.*.D.c.V.e. 
00000090: 9d00 bf0a 1b0f 8f13 7917 551b 351f 4f22 ........y.U.5.O" 
000000a0: c524 6f25 bc24 5523 d322 5123 de23 f523 .$o%.$U#."Q#.#.# 
000000b0: 1224 d023 2924 2a24 e523 6e23 bb22 3422 .$.#)$*$.#n#."4" 
000000c0: 5021 0a21 bd1f b01d 751c 021b eb19 e118 P!.!....u....... 
000000d0: ac18 7b18 9118 ec18 fc18 a818 f018 7f18 ..{............. 
000000e0: 6a18 2918 8417 5c17 fe16 dc15 cd14 5e14 j.)...\.......^. 
000000f0: 0514 c513 5213 5513 b613 ec13 4714 9514 ....R.U.....G... 
00000100: ee14 a214 8314 4614 9c13 d512 6512 9611 ......F.....e... 
00000110: 6110 d20f 7d0f 800f d10f c20f 1710 8f10 a...}........... 
00000120: 3b11 da11 8012 9013 1414 7914 8d14 9514 ;.........y..... 
00000130: e613 4a13 de12 4d12 9411 7b11 2a11 9310 ..J...M...{.*... 
00000140: 2011 6611 9c11 2112 d012 0713 7e13 c313 .f...!.....~... 
00000150: 6214 6414 4f14 ad13 d713 4c13 9e12 db11 b.d.O.....L..... 
00000160: f910 f810 0411 1411 0511 fb10 7411 8611 ............t... 
00000170: d011 7012 3f12 e712 0413 1913 5613 5f13 ..p.?.......V._. 
00000180: fb12 b912 a412 8212 6612 4512 8911 6911 ........f.E...i. 
00000190: a611 1212 0212 3012 a012 d912 8813 9f13 ......0......... 
000001a0: fb13 8514 1214 3a14 7a14 4314 8a14 3314 ......:.z.C...3. 
000001b0: e813 b313 fb12 a212 ca12 3912 9412 6612 ..........9...f. 
000001c0: c212 7712 3712 2812 4512 cd12 cd12 e312 ..w.7.(.E....... 
000001d0: cf12 fc12 3f13 d512 cc12 9012 4912 4012 [email protected] 
000001e0: 4412 4d12 cc11 a611 cd11 f211 dc11 2a12 D.M...........*. 
000001f0: 7112 9812 cd12 4713 8313 a513 7c13 a413 q.....G.....|... 
00000200: cf13 db13 e213 2b14 1214 1014 bf13 6413 ......+.......d. 

在hexl模式

,我遇到的问题的文件,我不知道UTF-8的文件类型是什么。我google搜索,但仍然没有运气。没有足够的信息,我将无法为该过程制定算法。噢,请分享你的想法,让代码运行起来。我需要启动这个脚本并尽快读取文件。你对这个问题的贡献将不胜感激。通过获取短整数,我将能够绘制从探测器接收到的信号的图形。最初的文件格式是.ht3,我已经将示例提取为.txt文件格式。 C语言将是巨大的(因为这是现在我的全部)

更新1: 我错了有关UTF-8。这是一个二进制数据。以下是它的示例原始数据。 (我刚刚得到这个数据)

> ˜€¨ Ó.; zè(… GÕò=j:!;0´I‚iˇˇˇˇˇˇ0g{g» 
> íôèeØÌΩ≠—ëÄÄìÇ+ëÖØo∫¥ü¬áÄ2Ü¢è–[˘€(d3≥<>B«Bü?!=”:ª8µ4©0,û&è´& *ˇD˘c˜V¯e˚ùø 
> èyU5O"≈$o%º$U#”"Q#fi#ı#$–#)$*$Â#n#ª"4"P! 
> !Ω∞uη¨{ëϸ®j)Ñ\˛‹Õ^≈RU∂ÏGïÓ¢ÉFú’eña“}Ä—¬è;⁄ÄêyçïÊJfiMî{*ì 
> fú!–~√bdO≠◊Lû€˘¯˚tÜ–p?ÁV_˚π§ÇfEâi¶0†Ÿàü˚Ö:zCä3Ë≥˚¢ 9îf¬w7(EÕÕ„œ¸?’Ãê[email protected]öÕÚ‹*qòÕGÉ•|§œ€‚+ødBÄ/”€?W‚µÿ⁄ŒÆ∏‹∂—|†fiè∑mDtÔÒV€÷ ŸÍ´*Û˜ûÃMÀ$`öÇ~^Ñ2\‘n±≥#,&K#ZNÖt˚∫È 3#≈‡”≥õ!û”≠]„(rŸß∞Ø„uâ¶<#0ˇFïfYˇˇˇˇˇ[gÙE…`óˇí¿≤ǬiØ√ëÄÄZźëüØÇºrµxû^áÄ 
> ã.ƃ◊@˛H$\/¬9˙@ÊB@2=x:u7æ3/ü*Ï$èı“˛'˘v˜‚¯/˚°ëSî<T∑"≈$Ø%%$…"s#u# #Ï#e#˜#Ò#˘#~#¢"≥""!®ä¸∑6b”}®.T8–?rÛ)íËJ¢~¯∞o§d∆Ä+f-flxLܰ€S4D›£W´≥º(áNŒ‰Y«“i~ev0ó¨6¯s—@Ïô&~•뛿ì§◊Íyîܶ[0∆ø‹ä€MEf±ÿÙù7*ü·Ÿß¶LP∞/%,†VT+ó≠ÕhÕÃÒîπ¶ ôu4wè˘…SJ~èáM∏È¥í¨µ¬¢ùJÙˇ∞ÜûAÅâÖt4:m 
> úx,˚Ÿ´fi≠ˇ˝BA~Ca1Ô}óAÄjm»∑ºö‡ªqwYG¶ùfi◊π{‹≥¬=L=æ 
> ıˇ∂—◊flŸ—‚Ë‘¬SA˛˜˛4£*ŸÙ“„x√˘¡7òˆ°è)ª:UXˇˇˇˇˇˇˇ4ñfi”ôtâh≠‹¡Ñ≥úîÄÄÄÇÉ©3º®∏ê•oâÄJÉx§‘–›˜veá',2Á;ZB[CÍAe>Ñ983¨-_(s$è[email protected]Ş,¯€ıI˜H˙˘˛:v Éohj!Ò#%÷$j#ç"7#3#ñ#Ö#6#À#C$$”#›"\""{! 
> t=Z|ôNU 
> s7.g|A»÷ÁãÇÒ;˛ˇfl„kìúØõxB≈æÈ"®Äô3ùyœS>së ó—}-vä_jP‡>EŸÌÒ–Gı|⁄≤O!˛ÏeôÌVwóÔÓ¸‹µüÑEtP˜cw£ 
> %jòï·‚”¿6™.Á‹éAÊ∆⁄TR?Wøƒ≤Çú—R7-_:O9a(1ógüΩ=-úÂæÌ—ºâôt©U. 
> XÄ0=YR|tŒ¶<Êõèf •ÕJ|)bJ]pA=‰¸π’‚˙› 
> F 
> ÙÛtm†œ„¢>®∞¡£∏êj>~˝$˝N=’œı≈í ∑âflIQ¢*√¯˜≈ó¡˛ 
> û¨|è+B>^ˇˇˇˇˇˇˇAÔÈ ¢Sô‘´ 
> ºz∞çÄÄÄtàp´ó∏Ö±rô§ÉÄ∏Ñr•≈Œãı˛'[email protected]ÑBºAô>k8Q1™*&#: áˇ¯Kˆx˜z˚û~µblV9Ò 
> o#∫$˙#´""q"`#…#∂#„# $X$<$é#fl"ñ"Ú h 
> {44&ë0®5xÇZlíp¬Øzü-9);Óh8%jÆä°à‰|Öß<j ∑ñ Bc±«PìÁœ∑ÅùSüó;)¿!ñ∫©XÒ™>◊¢9µ⁄)-uÏJyƒ 
> ⁄ÊÑò⁄íyQ⁄Äpp´çΩ⁄“ 

此文件之前,该文件在hexl模式。这是否意味着它是十六进制的?

+0

UTF-8是Unicode文本编码,用于表达非常大量的码点(“字符”),其使得Unicode的可用的。你确定这是你的?编辑问题以显示您希望能够从'raw.txt'文件中提取的数据类型,这可以提供帮助。在这里,“小数”意味着什么并不完全清楚。 – unwind

+1

你的目标不明确。我不确定“十进制”是什么意思,因为UTF-8是一种用于存储Unicode文本的格式,并且本身不是文件格式。您展示的示例数据似乎是一种专有的二进制格式,除了几处可读的字符外,它们不包含UTF-8数据。 – SirDarius

+0

是的,这就是我所拥有的。该文件在utf 8中。我需要将它们中的每一个都转换为十进制。 – fizsics

回答

1

从所有的评论我想我已经猜到你想要什么。

但有一点是肯定的:你的问题与UTF-8完全无关。

你的文件开头以下字节:f7 12 db 12 14 1a ac 1c 和有人评论在文件中的第4层无符号的短裤很可能4855, 4859, 6676, 7340这听起来似是而非您要在图形来表示数据。

Hexadecimal decimal 
--------------------- 
12f7   4855 
12db   4859 
141a   6676 
ac1c   7340 

你可能在这里看到一个模式。

那么这就是你需要在peudocode做什么:

重复,直到文件的末尾:

  • 阅读b1从文件和存储两个字节和b2
  • 短期价值,你要的是什么与前2个字节发生(b2 << 8) | b1

例子:

  • 在第一次迭代你会得到b1f712b2
  • b2 << 812001200 | f712f7这是4855十进制。
+0

这是不是原来的海报谁说'4855,4889,6676,7340'是可取的或正确的值... – aschepler

+0

@aschepler正确,只是看到它。现在编辑答案。如果它不是OP想要的,我会删除它。 –